这就是我定义线程的方式
public class Countdown implements Runnable{
public Countdown(){
new Thread(this).start();
}
//...
}
如果以这种方式启动,仍然可以获得线程的状态吗?喜欢
Countdown cd = new Countdown();
cd.getState();
最佳答案
不它不是。
如果您希望能够获取状态,则必须保留对线程的引用;例如
public class Countdown implements Runnable{
private final Thread t;
public Countdown(){
t = new Thread(this);
t.start();
}
public Thread.State getState() {
return t.getState();
}
// ...
}
顺便说一下,还有其他原因导致这种模式不完善:
Countdown
对象的引用丢失(例如,由于父对象构建期间发生异常),则会泄漏线程。 Countdown
对象很多,或者它们的生存期很短,那么最好使用线程池。