本帖最后由 wdhm5423 于 2015-3-1 15:05 编辑
源代码中Thread的构造函数:
public Thread() {
init(null, null, "Thread-" + nextThreadNum(), 0);
}
public Thread(Runnable target) {
init(null, target, "Thread-" + nextThreadNum(), 0);
}
在你的程序里,显然此时target!=null;
Thread里的run()方法:
public void run() {
if (target != null) {
target.run();
}
}
但是你已经对run()方法复写了,所以不会执行
if (target != null) {
target.run();
}
也就是target(new Runnable{})的run方法,而是执行复写的run()方法。
如果没复写Thread的run()方法,则会判断target != null,也就是判断是否传入Runnable的子类对象,如果有,执行该对象里的run()方法。这个才是正确的执行步骤。
|