this.getState() 为什么输出的NEW而不是RUNNABLE?
class Thread1 extends Thread {
@Override
public void run() {
while (true) {
System.out.println(this.getState());
}
}
在main方法中:
Thread t1 = new Thread(new Thread1()); t1.start();
输出的NEW,而不是预想中的RUNNABLE,这是为什么呢?
这是因为,this.getState()方法,实际上子类调用了父类的getState方法,这里的getState是对于Thread1这个类的实例而言的,而这个类的实例并没有执行start方法。
如果我们改写了一下main方法:
Thread1 t1 = new Thread1(); t1.start();
这样,输出的就是RUNNABLE,这是因为Thread1类的对象执行了start()方法,改变了state。

浙公网安备 33010602011771号