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。

posted @ 2020-12-08 15:08  Noah1997  阅读(102)  评论(0)    收藏  举报