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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wochaowoliuxing 中级黑马   /  2014-6-28 23:27  /  1858 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

有了Runable还有Thread存在的必要吗?

16 个回复

倒序浏览
有。没有Thread,谁帮你运行Runnable里面的run()方法?
回复 使用道具 举报
Runnable是继承threadf的子类把
回复 使用道具 举报
当然有必要存在啊 thread才是线程 好吧 runable仅仅是提供了run方法的接口而已 没有thread 靠runable又不能创建线程和启动线程
回复 使用道具 举报
Thread 才是线程  thread有个构造方法,thread(Runnable run); Runnable 是一个接口 ,它里面有个抽象run()方法。而我们 在创建一个类实现Runnable 接口,子类并实现run方法。在创建线程就必须把这个子类的对象作为参数传给Thread,然后用Thread类的实例对象start()方法开启线程,执行Thread类中的run(),Thread方法中的run()方法会调用Runnable实现类中的run()方法.
其实:Thread类是Runnable 的实现类

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
貌似先有Thread ,后有Runnable。
回复 使用道具 举报
郑飞 高级黑马 2014-6-29 11:04:05
7#
楼主你完全可以不用Thread写run(),但是Runnable的子类必须丢到Thread对象里去.
回复 使用道具 举报
Hugoo 中级黑马 2014-6-29 11:36:59
8#
1、Runable里没有run(),而是规定implementing   class必须要有run(),而且Runnable的作用仅限于此;而Thread   class里有许多好用的method,比如sleep()等      2、当你发现必须extends其他某个class,而又要用线程,因为无法extends   Thread,所以要implements   Runnable      3、如果你的某个class   A   implements   Runnable,则不可以直接用这个class,只能用new   Thread(A)得到的thread   object      4、对thread   object,用start()来启动,该method会先initialize   thread   object,然后invoke它的run()      总之,使用Thread 需要用new Thread()或者new Thread(Runable target),就是说Runable的子类必须实现run()方法,并由一个Thread来用start()方法来调用Runable的run();
回复 使用道具 举报
没了Thread,要想休息一下怎么办!
回复 使用道具 举报
连已过时的方法都有存在的必要,你还想把Thread从java中剔除?
回复 使用道具 举报
一个是接口,一个是类,
回复 使用道具 举报
rekirt 发表于 2014-6-29 23:14
一个是接口,一个是类,

Runable是不是已经实现了Thread的所有功能啊
回复 使用道具 举报
yinxjfly 发表于 2014-6-29 19:39
没了Thread,要想休息一下怎么办!

Runable休息不了吗
回复 使用道具 举报
Hugoo 发表于 2014-6-29 11:36
1、Runable里没有run(),而是规定implementing   class必须要有run(),而且Runnable的作用仅限于此;而Thre ...

很详细,学习了
回复 使用道具 举报
Thread可以开启多线程,Runnable只是提供一个run方法。执行Runnable里面的run相当于是在执行run的构造方法,
回复 使用道具 举报
Thread可以开启多线程,Runnable只是提供一个run方法。
执行Runnable里面的run相当于是在执行run的构造方法,而不是多线程。
只有通过Thread里start的开启多线程,才可以多线程并发执行
回复 使用道具 举报

我记得一般休息是这么写,Thread.sleep()
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马