java 多线程 继承Thread和实现Runnable的区别

 我来答
山东中公优就业
2017-11-27 · TA获得超过1511个赞
知道小有建树答主
回答量:907
采纳率:88%
帮助的人:212万
展开全部

Java中线程的创建有两种方式:

1、 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中

2、 通过实现Runnable接口,实例化Thread类

Runnable
接口只有一个方法 run(),我们声明自己的类实现 Runnable
接口并提供这一方法,将我们的线程代码写入其中,就完成了这一部分的任务。但是 Runnable 接口并没有任何对线程的支持,我们还必须创建
Thread 类的实例,这一点通过 Thread 类的构造函数public Thread(Runnable target);来实现。

3、继承Thread实现的模式是  定义多个线程,各自完成各自的任务. 

4、实现Runnable实现的模式是  定义多个线程,实现一个任务.

总结:一个是多个线程分别完成自己的任务,一个是多个线程共同完成一个任务。其实,在实现一个任务用多个线程来做也可以用继承Thread类来实现,只是比较麻烦,一般我们用实现Runnable接口来实现。

dttsw
2017-12-10 · TA获得超过1059个赞
知道小有建树答主
回答量:770
采纳率:88%
帮助的人:311万
展开全部
Thread自身也实现了Runnable接口,不过扩展出更多的功能,比如比如常用的启动接口start。
Runnable,是线程的原生接口,要启动线程,必须可以调动到run方法接口。run方法是java库设计者,给我们写任务代码的地方。
Thread的start,会让操作系统(或者理解成虚拟机,实际上是操作系统在完成此任务)把run方法中的代码安排成线程执行。
Thread类是有特定功能的组件。直接运行run方法,是不可能启动为线程运行的。
从设计模式的角度看,继承Thread重写run方法,使用面向对象的继承规则,设计模式理念是适配器理念。好处简单,坏处,java的类不可继承多个父类,此处实际使用不是什么大问题。
实现Runnable使用了,面向对象的多态规则。好处,可以继承其他类。使用中也不是什么大问题。
设计模式中有一条,所有的组件先写接口再写实现,更容易扩展,修改迁移。不是很大的项目,为实现接口而编写接口得不偿失。如spring推荐的模式在笑项目中就是这样尴尬!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式