Java 关于Runnable和Thread的混淆
我知道这是一件很小的事情,对于所有的程序员来说都很容易,但是我被卡住了。我无法理解为什么这个代码段打印出“Dog”而不是“Cat” 在Java 关于Runnable和Thread的混淆,java,multithreading,Java,Multithreading,我知道这是一件很小的事情,对于所有的程序员来说都很容易,但是我被卡住了。我无法理解为什么这个代码段打印出“Dog”而不是“Cat” 在线程对象上调用start()会导致JVM生成一个新的系统线程,然后继续调用run方法。其默认实现如下所示: private Runnable target; // This is what you passed to the constructor @Override public void run() { if (target != null) {
线程
对象上调用start()
会导致JVM生成一个新的系统线程,然后继续调用run
方法。其默认实现如下所示:
private Runnable target; // This is what you passed to the constructor
@Override
public void run() {
if (target != null) {
target.run();
}
}
由于您在匿名线程
子类声明中重写了这个方法,因此从未调用过这个代码,并且您注入的可运行
也从未使用过
另外,只要可能,请将代码放在Runnable
s中
private Runnable target; // This is what you passed to the constructor
@Override
public void run() {
if (target != null) {
target.run();
}
}