黑马程序员技术交流社区

标题: 请教一个关于线程的问题 [打印本页]

作者: 心是你仰望的城    时间: 2014-2-23 21:50
标题: 请教一个关于线程的问题
就我所知创建线程最常用有两种方式,1,继承Tread类   2,实现runnable借口
请教这两种方式的优劣区别?
最好举例说明,谢谢。。。

作者: 浅一蓝    时间: 2014-2-23 22:02
第一种:继承Thread类,通过编写线程继承thread类,重写run()方法来实现线程,这个类是在java.lang包中定义的,但是一个类只能继承一个父类,这个方法有这个局限。
第二种:直接实现Runnable多线程接口,Runnable只有一个抽象方法run ,并没有start()方法,也就是说要通过Thread类来启动Runnable实现的多线程。不过这个避免了继承的局限。一个类可以继承多个接口。
Thread类也是Runnable接口的子类。
作者: 疲劳的小马    时间: 2014-2-24 02:15
继承Thread类方式,通过继承thread类来变成线程,将要运行的线程代码放在run()方法中,这种方式有个局限,因为Java只支持单继承,所以,一旦继承了Thread类,就不能再继承其他类,产生了功能上的局限。
另一种,实现Runnable接口,复写run()方法 ,将实现Runnable接口的子类对象传递给Thread对象中,实现线程。这种方式是最常用的方,避免了第一种的局限性。
作者: ghhryr    时间: 2014-2-24 02:23
我觉得上面的同学说的非常好,继承Thread类有局限性(java只支持单继承)和实现Runnable接口(可以扩展功能) 我就在补充两点:1.实现Runnable接口可以解决共享资源问题,如 卖票问题。
                    2.体现了面向对象的编程思想,从程序的执行者变为指挥者,不用自己亲自去写,只要调用别人的对象就可以了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2