博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 多线程 继承Thread和实现Runnable的区别
阅读量:7242 次
发布时间:2019-06-29

本文共 1463 字,大约阅读时间需要 4 分钟。

1)继承Thread:

public class ThreadTest extends Thread

{
private int count;
private String name;
public ThreadTest(int count,String name){
this.count = count;
this.name = name;
}
public void run()
{
while(count>0)
{
System.out.println(name+"买票 "+count--);
}
}
public static void main(String []args)
{
ThreadTest t1 = new ThreadTest(10,"1号窗口");
ThreadTest t2 = new ThreadTest(10,"2号窗口");
t1.start();
t2.start();
}
}

 

运行结果:

1号窗口买票 10

1号窗口买票 9
1号窗口买票 8
2号窗口买票 10
1号窗口买票 7
2号窗口买票 9
1号窗口买票 6
2号窗口买票 8
1号窗口买票 5
2号窗口买票 7
1号窗口买票 4
2号窗口买票 6
1号窗口买票 3
2号窗口买票 5
1号窗口买票 2
2号窗口买票 4
1号窗口买票 1
2号窗口买票 3
2号窗口买票 2
2号窗口买票 1

2)实现Runnable接口

public class hello implements Runnable{

private int ticket=19;

@Override
public void run() {
for(int i=0;i<20;i++){
if(this.ticket >0){
System.out.println(Thread.currentThread().getName()+"正在买票"+this.ticket--);
}
}
}
public static void main(String[] args){
hello h1 = new hello();
new Thread(h1,"3号窗口").start();
new Thread(h1,"1号窗口").start();
new Thread(h1,"2号窗口").start();
}

}

运行结果:

1号窗口正在买票19

2号窗口正在买票18
3号窗口正在买票19
2号窗口正在买票16
1号窗口正在买票17
2号窗口正在买票14
3号窗口正在买票15
2号窗口正在买票12
1号窗口正在买票13
2号窗口正在买票10
3号窗口正在买票11
2号窗口正在买票8
1号窗口正在买票9
2号窗口正在买票6
3号窗口正在买票7
2号窗口正在买票4
1号窗口正在买票5
2号窗口正在买票2
3号窗口正在买票3
1号窗口正在买票1

 

从上面的运行结果可以看出:继承Thread实现的模式是  定义多个线程,各自完成各自的任务.  实现Runnable实现的模式是  定义多个线程,实现一个任务.

其实在实现一个任务用多个线程来做也可以用继承Thread类来实现只是比较麻烦,一般我们用实现Runnable接口来实现,简洁明了。

大多数情况下,如果只想重写 run() 方法,而不重写其他 Thread 方法,那么应使用 Runnable 接口。

 

转载于:https://www.cnblogs.com/saliency/p/5454397.html

你可能感兴趣的文章
upper_bound——自己的实现
查看>>
java 进销存 销售报表 库存管理 商户管理 springmvc SSM crm 项目
查看>>
web前端浏览器对象模型章节
查看>>
指针作为函数参数返回地址(值)
查看>>
落地实体 颠覆传统 区块链奏互联网时代最强音
查看>>
前端学习笔记(八)-Function、Date、RegExp
查看>>
iOS开发之地图
查看>>
使用vim内建函数findfile()笔记
查看>>
Web开发:URL编码与解码
查看>>
单调队列模板
查看>>
solr+hadoop版本不一致导致的异常
查看>>
Android Apk 瘦身大法
查看>>
Windows下忘记MySQL数据库root用户密码解决办法
查看>>
myBaits缓存
查看>>
Java笔试题(二)解释servlet、Filter和listener
查看>>
Git SSL公钥密钥生成
查看>>
怎样去思考问题 解决问题 zkc学长的福利
查看>>
第二十课:运算放大器抽象
查看>>
samtools和bcftools使用说明
查看>>
OC中使用 static 、 extern、 const使用
查看>>