为什么这段代码输出的是 'thread:Thread..' 而不是 'runnable:Thread..'?
Why does this code output is 'thread:Thread..' ,not 'runnable:Thread..'?
我有一个简单的线程测试代码片段,它的伪代码是这样的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();
}
}
默认情况下,Thread
的 run
方法将委托给您在构造函数中提供的 Runnable
。
但是,您覆盖了 Thread
的(匿名)子类中的 run
方法以执行其他操作。
我有一个简单的线程测试代码片段,它的伪代码是这样的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();
}
}
默认情况下,Thread
的 run
方法将委托给您在构造函数中提供的 Runnable
。
但是,您覆盖了 Thread
的(匿名)子类中的 run
方法以执行其他操作。