如何检查线程是否终止?

什么时候线程达到终止状态? 到达run()方法结束时是否会终止?

那么检查线程是否被终止的正确方法是什么? 因为以下情况似乎总是适合我

 if(!(thread.getState()).equals("TERMINATED")){} 

有任何想法吗?

首先: Thread.getState()返回一个Thread.State ,它永远不会等于一个String ,所以你需要像这样编写代码:

 if(thread.getState()!=Thread.State.TERMINATED){ } 

是的:当run()方法结束时(正常或因为它抛出exception), Thread将进入TERMINATED状态。

测试方法thread.isAlive()

…或者可选地,加入直到它完成thread.join()