如何检查线程是否正在运行

问题描述:

我想检查哪个线程正在工作/正在运行。当5个线程正在工作/正在运行时,则需要暂停然后 - >因为1被释放/完成/停止下一个排队的线程将启动/运行。如何检查线程是否正在运行

如何做到这一点

+1

难道你不能跟踪你的程序内哪个线程当前发布的工作? – Tudor

+0

通常你编写你的算法,所以你不需要检查线程的状态。它仅用于检测应用程序中的错误,而且很少完成。如果你认为你需要这样做,那么很有可能有更好的方法来解决这个问题。 –

你可以得到一个线索是什么状态,通过使用返回Thread.States的枚举的的getState()方法。线程只能在给定时间点处于以下状态之一。

新鲜线程尚未开始执行。
RUNNABLE在Java虚拟机中执行的线程。
BLOCKED被阻塞等待监视器锁定的线程。
WAITING一个正在等待被另一个线程通知的线程。
TIMED_WAITING一个线程正在等待由另一个线程通知特定的时间。
TERMINATED线程运行方法已结束。

Thread t = new Thread(); 
Thread.State e = t.getState(); 
Thread.State[] ts = e.values(); 
    for(int i = 0; i < ts.length; i++){ 
    System.out.println(ts[i]); 
    } 

或者你可以使用线程池,它是JDK的一部分,如ExecutorService