A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 心是你仰望的城 中级黑马   /  2014-2-23 21:50  /  847 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

就我所知创建线程最常用有两种方式,1,继承Tread类   2,实现runnable借口
请教这两种方式的优劣区别?
最好举例说明,谢谢。。。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

3 个回复

倒序浏览
第一种:继承Thread类,通过编写线程继承thread类,重写run()方法来实现线程,这个类是在java.lang包中定义的,但是一个类只能继承一个父类,这个方法有这个局限。
第二种:直接实现Runnable多线程接口,Runnable只有一个抽象方法run ,并没有start()方法,也就是说要通过Thread类来启动Runnable实现的多线程。不过这个避免了继承的局限。一个类可以继承多个接口。
Thread类也是Runnable接口的子类。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报 1 0
继承Thread类方式,通过继承thread类来变成线程,将要运行的线程代码放在run()方法中,这种方式有个局限,因为Java只支持单继承,所以,一旦继承了Thread类,就不能再继承其他类,产生了功能上的局限。
另一种,实现Runnable接口,复写run()方法 ,将实现Runnable接口的子类对象传递给Thread对象中,实现线程。这种方式是最常用的方,避免了第一种的局限性。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
我觉得上面的同学说的非常好,继承Thread类有局限性(java只支持单继承)和实现Runnable接口(可以扩展功能) 我就在补充两点:1.实现Runnable接口可以解决共享资源问题,如 卖票问题。
                    2.体现了面向对象的编程思想,从程序的执行者变为指挥者,不用自己亲自去写,只要调用别人的对象就可以了

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马