为了账号安全,请及时绑定邮箱和手机立即绑定

关于两种方法创建线程的不同


学到现在 我有一点不是很明白   用Runnable接口和Thread类创建线程貌似可以得到相同运行结果,那到底这两种方法有什么不同呢?或者说用Runnable接口创建的线程是不是都可以用Thread来创建?希望有某位大神可以为我解答这个问题

正在回答

2 回答

第一:创建线程只有继承Thread类和实现Runnable接口两种方式(Thread也是实现了Runnable接口);

第二:若以继承Thread类方式创建线程则这个类的实例就可以重写Thread类的几十个方法,注意是好几十个方法;

第三:若以实现Runnable接口的方式创建线程则仅仅只有一个run()方法可供重写;注意是只有一个;

    实现Runnable接口创建的线程最终还是要通过将自身实例作为参数传递给Thread然后执行,当你要为一个没有继承Thread类的类创建线程,而且只想让这个类的实例调用run方法执行任务,这时候Runnable接口就相当于为你的目标类提供了一个激活方式,设计该接口的目的是为了那些希望在激活时执行代码的对象提供一个公共协议,激活的意思是说某个线程已启动并且尚未停止。 

   


5 回复 有任何疑惑可以回复我~
#1

hongchun 提问者

多谢!
2015-12-23 回复 有任何疑惑可以回复我~
#2

hongchun 提问者

我再多问一句,你的意思就是 在某些情况下,也就是没有类继承Thread类的时候,也是可以直接用Runnable接口来直接实现线程的创建 是么?
2015-12-23 回复 有任何疑惑可以回复我~
#3

是王小二呀 回复 hongchun 提问者

对,<1>.实现Runnable接口<2>.将这个类的实例对象传递给Thread,此时线程在没有继承Thread类的情况下创建完毕
2015-12-23 回复 有任何疑惑可以回复我~
#4

hongchun 提问者 回复 是王小二呀

谢谢 谢谢 我理解了
2015-12-24 回复 有任何疑惑可以回复我~
查看1条回复

这两种创建线程的方法本身没有什么不同,一个是实现Runnable接口,一个是继承Thread类。而使用实现Runnable接口这种方法:1.可以避免Java的单继承的特性带来的局限性;2.适合多个相同程序的代码去处理同一个资源的情况,把线程同程序的代码及数据有效分离,较好地体现了面向对象的设计思想。开发中大多情况下都使用实现Runnable接口这种方法创建线程。

3 回复 有任何疑惑可以回复我~
#1

hongchun 提问者

多谢!
2015-12-23 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于两种方法创建线程的不同

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信