黑马程序员技术交流社区
标题:
匿名Thread中的匿名Runnable
[打印本页]
作者:
wzg1015
时间:
2014-10-26 20:43
标题:
匿名Thread中的匿名Runnable
以前看到有人问过,找不到了,我想问下为什么会是显示“Thread”
Thread th=new Thread(new Runnable() {
@Override
public void run() {
//线程任务
System.out.println("Runnable");
}
}){
@Override
public void run() {
//线程任务
System.out.println("Thread");
}};
th.start();
复制代码
API的说明
public void
run
()
如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。 Thread 的子类应该重写该方法。
我开始认为是由于我新的匿名Thread类没有以Runnable为参数的构造函数,所以导致参数其实未传进去,为了验证是否传进去了
Thread th=new Thread(new Runnable() {
public void run() {
System.out.println("Runnable");
}
}) {
/**空**/
};
th.start();
复制代码
显示正确,说明参数被正确传进去了。
突然发现写着写着就解决。。。
因为Runnable在Thread中只是一个成员变量,它的调用依赖于Thread默认的run方法,只要重写了run方法,target的调用有无从获得了。
public void run() {
if (target != null) {
target.run();
}
}
复制代码
本来想当作问题来发的,没想到写着写着就解决了。突然会想起了当时看视频貌似老师也是这么解释的。不过也算了解了匿名类也是可以把参数传递进去的,而且自动调用的父类响应的构造函数调用的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2