为什么这个代码输出是'thread:Thread ..',而不是'runnable:Thread ..'?

时间:2016-07-28 03:04:38

标签: java-threads

我有一个简单的线程测试代码片段,它的伪代码就像这个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();
}

}

1 个答案:

答案 0 :(得分:1)

默认情况下,Thread的{​​{1}}方法将委托给您在构造函数中提供的run

但是,您覆盖了Runnable的(匿名)子类中的run方法以执行其他操作。