黑马程序员技术交流社区

标题: 为什么要将子类对象 传给Thread类的构造函数啊? [打印本页]

作者: 于大脑袋    时间: 2015-3-7 23:19
标题: 为什么要将子类对象 传给Thread类的构造函数啊?
[color=rgba(0, 0, 0, 0.701961)]实现了Runnable接口的子类对象作为Thread类的构造函数的实际参数传入后完成线程对象和t之间的关联
[color=rgba(0, 0, 0, 0.701961)]为什么要将子类对象 传给Thread类的构造函数啊?


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




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