我有一个简单的线程测试代码片段,它的伪代码就像这个new Thread(new Runnable(){...implement run method....}){...override run method...}.start();
。我的问题是为什么这个代码输出是'thread:Thread ..',而不是'runnable:Thread ..'?这里是完整的代码,谢谢!
public class ThreadTest {
public static void main(String[] args) {
new Thread(new Runnable(){//1 annonymous class implement Runnable interface
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("runnable:" + Thread.currentThread().getName());
}
}){
public void run() {//2 annonymous class extends Thread class
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("thread:" + Thread.currentThread().getName());
};
}.start();
}
}
答案 0 :(得分:1)
默认情况下,Thread
的{{1}}方法将委托给您在构造函数中提供的run
。
但是,您覆盖了Runnable
的(匿名)子类中的run
方法以执行其他操作。