Java多线程的两种实现方式
Java总共有两种方式实现多线程
方式1:通过继承Thread类的方式
package com.day04; /**
* 通过继承Thread类并复写run方法来是实现多线程
*
* @author Administrator
*
*/
public class ThreadDemo1 extends Thread {
@Override
public void run() {
for (int i = 0; i < 4; i++) {
// 获取当前线程的名字
// String threadName = Thread.currentThread().getName(); //方式1
String threadName = super.currentThread().getName(); // 方式2
System.out.println(threadName + " print " + i);
}
} public static void main(String[] args) {
// 创建线程对象
ThreadDemo1 t1 = new ThreadDemo1();
ThreadDemo1 t2 = new ThreadDemo1();
// 调用start方法启动多线程
t1.start();
t2.start();
} }
运行结果如下:
Thread-1 print 0
Thread-0 print 0
Thread-1 print 1
Thread-0 print 1
Thread-0 print 2
Thread-0 print 3
Thread-1 print 2
Thread-1 print 3
可以发现总共开启了两个线程,并且两个线程是随机打印出对应的序号,这是因为这两个线程在抢占系统资源是随机的,谁抢到,谁就执行打印语句。
方式1:通过实现Runnable接口来实现
package com.day04; /**
* 通过实现Runnable接口来实现多线程
*
* @author Administrator
*
*/
public class ThreadDemo2 implements Runnable {
@Override
public void run() {
for (int i = 0; i < 4; i++) {
// 获取当前线程的名字
String threadName = Thread.currentThread().getName();
System.out.println(threadName + " print " + i);
}
} public static void main(String[] args) {
// 创建线程对象
ThreadDemo2 t1 = new ThreadDemo2();
// 调用start方法启动多线程
new Thread(t1).start();
new Thread(t1).start();
} }
运行结果如下:
Thread-0 print 0
Thread-0 print 1
Thread-1 print 0
Thread-0 print 2
Thread-1 print 1
Thread-1 print 2
Thread-1 print 3
Thread-0 print 3
可以发现总共开启了两个线程,并且两个线程是随机打印出对应的序号,这是因为这两个线程在抢占系统资源是随机的,谁抢到,谁就执行打印语句。
总结:
1.继承Thread类并复写run方法的方式:
优点:实现简单。
缺点:因为java是单继承,所以当某个类继承了Thread类,就不能在继承其他的类了。
2.通过实现Runnable接口的方式
缺点:实现稍微复杂点。
优点:因为是通过实现接口的方式,所以它可以再继承其他的类,不存在局限性。
注意的是:继承Thread如果要获取当前线程的名字可以通过Thread.currentThread().getName()之外,还可以通过super.currentThread().getName()这种方式来获取,而实现接口的方式只能通过Thread.currentThread().getName()这种方式来获取。
Java多线程的两种实现方式的更多相关文章
- 阿里巴巴--java多线程的两种实现方式,以及二者的区别
阿里巴巴面试的时候,昨天问了我java面试的时候实现java多线程的两种方式,以及二者的区别当时只回答了实现线程的两种方式,但是没有回答上二者的区别: java实现多线程有两种方式: 1.继承Thre ...
- java多线程的两种创建方式
方式一:继承Thread类 1.创建一个继承于Thread类的子类 2.重写Thread类的run()方法---> 将此线程执行的操作声明在run()中 3.创建Thread类的子类的对象 4. ...
- java多线程的几种实现方式
java多线程的几种实现方式 1.继承Thread类,重写run方法2.实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的target3.通 ...
- Java多线程的三种实现方式
java多线程的三种实现方式 一.继承Thread类 二.实现Runnable接口 三.使用ExecutorService, Callable, Future 无论是通过继承Thread类还是实现Ru ...
- 创建Java多线程的两种方式和线程异常
一.使用多线程的两种方法 使用多线程的两种方法有:继承Thread类和实现runable接口. 二.继承Thread类 来看一下thread类的源代码: class Thread implement ...
- 【Java多线程】两种基本实现框架
Java多线程学习1——两种基本实现框架 一.前言 当一个Java程序启动的时候,一个线程就立刻启动,改程序通常也被我们称作程序的主线程.其他所有的子线程都是由主线程产生的.主线程是程序开始就执行的, ...
- Python3 多线程的两种实现方式
最近学习 Python3 ,希望能掌握多线程的使用,在此做个笔记.同时也希望Python 牛人指点错误.关于线程的概念,前面简单总结了一下 java 的多线程,传送门:java 多线程概念,三种创建多 ...
- [转载]Java线程的两种实现方式
转载:http://baijiahao.baidu.com/s?id=1602265641578157555&wfr=spider&for=pc 前言 线程是程序的一条执行线索,执行路 ...
- day36 joinablequeue、多线程理论、多线程的两种使用方式、守护线程、互斥锁、死锁、递归锁、信号量
1.joinablequeue队列 joinablequeue与queue一样,也是一种队列,其继承自queue,也有queue中的put 与get 方法,但是在joinablequeue中有自己的 ...
随机推荐
- css3的nth-child选择器的具体探讨
css3的nth-child选择器的具体探讨 前言 在十年前開始的div+css布局兴起之时,我就開始了CSS的学习和实践.在当年,对于CSS选择器,基本上是没有什么选择性的,仅仅有ID选择器,CLA ...
- CSS Flexible 布局兼容性以及解决方案
1.兼容性 https://caniuse.com/#feat=flexbox IE11以及以下不支持. 2.解决方案 flexibility库 https://github.com/jonathan ...
- CSS之Position全面认识
CSS的很多其他属性大多容易理解,比如字体,文本,背景等.有些CSS书籍也会对这些简单的属性进行大张旗鼓的介绍,而偏偏忽略了对一些难缠的属 性讲解,有避重就轻的嫌疑.CSS中主要难以理解的属性包括盒型 ...
- mongodb or and 条件拼凑 Query.And Query.Or
查询 1月 7月 8月 的数据 list - [0] { "$or" : [{ "JobDate" : { "$gte" : ISODate ...
- android之ScrollView里嵌套ListView(转)
hi,大家好,研究完ScrollView嵌套ScrollView之后,本人突然又想研究ScrollView里嵌套ListView了. 如果还不知道ScrollView嵌套ScrollView是怎么实现 ...
- mysql数据库初始化(启动mysql时候报很多错误,初始化)
./mysql_install_db --defaults-file=/etc/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/us ...
- core image几个滤镜样例 oc版本号和swift版本号
oc版本号 //万花筒模式 + (CGImageRef) getKaleidoscope:(CIContext *)context { CIImage * image = [CIImage image ...
- nginx源码学习_数据结构(ngx_int_t)
nginx中关于整型的数据结构位于src/core/ngx_config.h中 结构比较简单,就是一个typedef的操作,具体如下: typedef intptr_t ngx_int_t; type ...
- Ecshop提示Only variables should be passed by reference in错误
Ecshop是个坑爹货,为什么tiandi会说它是个坑爹货呢,请看一下下面的官方的运行环境推荐: 服务器端运行环境推荐·php版本5.0以上5.3以下的版本(推荐使用5.2系列版本)·Mysql版本5 ...
- UVa10099_The Tourist Guide(最短路/floyd)(小白书图论专题)
解题报告 题意: 有一个旅游团如今去出游玩,如今有n个城市,m条路.因为每一条路上面规定了最多可以通过的人数,如今想问这个旅游团人数已知的情况下最少须要运送几趟 思路: 求出发点到终点全部路其中最小值 ...