如何检查线程是否终止?

Upv*_*ote 10 java multithreading

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

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

if(!(thread.getState()).equals("TERMINATED")){}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Joa*_*uer 18

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

if(thread.getState()!=Thread.State.TERMINATED){ }
Run Code Online (Sandbox Code Playgroud)

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

  • `和yes:当run()方法结束时(正常或因为它抛出一个异常),那么一个Thread将进入TERMINATED状态.实际上这不是真的,w /异常执行就像异常它调用`UncaughtExceptionHandler`它可以随意做任何事情.(包括像`Thread.currentThread().run()`这样的东西,线程处于终止状态后exit()方法可以阻塞(无限)对`ThreadGroup`同步. (5认同)

Man*_*res 14

测试方法 thread.isAlive()

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