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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hadexs 中级黑马   /  2013-6-23 22:23  /  1026 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Super_Class 于 2013-6-24 18:35 编辑

创建Thread类的对象(创建线程),并将Runnable接口的子类对象作为参数传递给Thread的构造函数。这里为什么要将子类对象传递呢?还有,两种创建线程方法的区别是什么?

评分

参与人数 1技术分 +1 收起 理由
Super_Class + 1 很给力!

查看全部评分

3 个回复

正序浏览
因为,自定义的run方法所属的对象是Runnable接口的子类对象。

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

两种方式区别:

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

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


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

评分

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

查看全部评分

回复 使用道具 举报
继承方法的话可能子类继承有其他的父类,由于不能多线程所以继承不了Thread 就需要用实现runnable的方法了               
避免了单继承的局限性. 建议用实现的方式                                                                                                            
回复 使用道具 举报
因为两个run方法不是同一个.所以要讲runnable的子类作为对象传给Thread..这样start方法才可以调用Runnable子类的run方法,不然就是调用Thread的空RUN方法了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马