黑马程序员技术交流社区

标题: 多线程 [打印本页]

作者: hadexs    时间: 2013-6-23 22:23
标题: 多线程
本帖最后由 Super_Class 于 2013-6-24 18:35 编辑

创建Thread类的对象(创建线程),并将Runnable接口的子类对象作为参数传递给Thread的构造函数。这里为什么要将子类对象传递呢?还有,两种创建线程方法的区别是什么?
作者: 8047107    时间: 2013-6-23 22:30
因为两个run方法不是同一个.所以要讲runnable的子类作为对象传给Thread..这样start方法才可以调用Runnable子类的run方法,不然就是调用Thread的空RUN方法了
作者: 8047107    时间: 2013-6-23 22:32
继承方法的话可能子类继承有其他的父类,由于不能多线程所以继承不了Thread 就需要用实现runnable的方法了               
避免了单继承的局限性. 建议用实现的方式                                                                                                            
作者: Wen丶    时间: 2013-6-24 08:17
因为,自定义的run方法所属的对象是Runnable接口的子类对象。

所以要让线程去指定指定对象的run方法。就必须明确该run方法所属对象。

两种方式区别:

继承Thread: 线程代码存放Thread子类run方法中。

实现Runnable,线程代码存在接口的子类的run方法。


实现Runnable接口相对于继承Thread类来说,有如下的显著优势:
   1.适合多个相同代码的线程去处理同一个资源的情况
   2.可以避免由于java的单继承特性带来的局限
   3.增强了程序的健壮性,代码能够被多个线程共享,代码与数据时独立的




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