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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

[color=rgba(0, 0, 0, 0.701961)]实现了Runnable接口的子类对象作为Thread类的构造函数的实际参数传入后完成线程对象和t之间的关联
[color=rgba(0, 0, 0, 0.701961)]为什么要将子类对象 传给Thread类的构造函数啊?

2 个回复

倒序浏览
实现Runnable接口得类就是要将一部分代码当成线程的任务进行封装 ,  其实这么做的 目的 就是解耦 不知道你能不能理解,  让程序保持高内聚 低耦合  减少其他程序对我们程序的影响,这是我们编程中十分重要的概念,你的类其实用不到Thread 类中的所有属性 和方法 所以继承Thread 类,会让你的类增加很多没有必要的引用  也使你的程序的独立性变得很差, 而对外暴露接口 就可以降低 程序之间的耦合性 ,
你可以看看 Thread的源码  他的run方法中写的是 run(){
r.run()}这个r就是 参数中 传入的 Runnable的实现类   如果 你不从 构造参数中传入的话 那么 你准备如何去接收这个封装了线程任务的类的对象呢?
回复 使用道具 举报
Runnable是个接口,时说明它里面是不可能实现具体的方法的,否则就是抽象类了,从它的子类看,它的内部只有一个抽象run方法,这也就意味着它不能调用底层系统资源创建线程,真正具有创建线程功能的还是Thread类。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马