线程何时达到已终止状态?到达run()
方法结束时是否会终止?
那么检查线程是否被终止的正确方法是什么?因为以下情况似乎总是适合我
if(!(thread.getState()).equals("TERMINATED")){}
有什么想法吗?
答案 0 :(得分:17)
首先:Thread.getState()
返回一个Thread.State
,它永远不会等于String
,所以你需要像这样编写代码:
if(thread.getState()!=Thread.State.TERMINATED){ }
是的:当run()
方法结束时(正常或因为它抛出异常),Thread
将进入TERMINATED
状态。
答案 1 :(得分:13)
测试方法thread.isAlive()
...或者,可选择加入,直至完成thread.join()