黑马程序员技术交流社区

标题: 关于创建多线程的两种方式 [打印本页]

作者: hubby    时间: 2013-11-14 11:36
标题: 关于创建多线程的两种方式
创建多线程可以继承一个Thread类,也可以实现一个Runnable接口,我想问一下都是创建多线程,这有什么区别?
作者: linjl_ll    时间: 2013-11-14 11:46
本帖最后由 linjl_ll 于 2013-11-14 11:48 编辑

首先在启动线程上有一些区别,Thread子类本身就代表线程,所以可以直接调用子类对象的start方法,
Runnable接口的对象它本身不代表一个线程,启动时需要借助一个Thread类启动,Thred t = new Thread(runnable) t.start();

使用线程子类时只能启动一次线程就是只能调用一次start方法,而通过接口的话,可以创建多个thread启动多个runnable的线程。

你可以假设下,如果没有runnable的实现方式,那么线程只能通过thread的子类实现,但我们知道java中只有单继承,所以该类就不能继承其他的类了,这就给程序的扩展性带来了很大的局限性,runnable的出现就解决了这样的问题,现在实现多线程的话一般都是使用runnable接口实现,基本不用thread的子类。
作者: LuckyQS    时间: 2013-11-14 13:14
因为Java只有单继承,一个类只能继承一个父类,这就是Therad的局限。

而使用Runnable接口可以避免点继承的局限,因为一个类可以实现多个接口。
更适合于适合于资源的共享

作者: 王雨神    时间: 2013-11-14 14:52
Java是单继承,如果现在你有一个人你既想让他继承一个类又想让他继承线程,这个时候就得用java的接口了。所以这就提现了Runnable接口的用意了。




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