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

时间:2011-12-12 09:12:50

标签: java multithreading threadpool

我想检查哪个线程正在运行/正在运行..当5个线程正在运行/运行时需要暂停然后 - >当1被释放/完成/停止下一个排队的线程将开始/运行。

如何做到这一点

2 个答案:

答案 0 :(得分:3)

您可以使用getState()方法获取线程所处的状态,该方法返回一个Enum of Thread.States。线程在给定的时间点只能处于以下状态之一。

尚未开始执行的新主题。
RUNNABLE 在Java虚拟机中执行的线程。
BLOCKED 阻塞等待监视器锁定的线程。
等待正在等待另一个线程通知的线程。
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]); 
  }   

答案 1 :(得分:2)

或者您可以使用属于JDK的线程池,例如ExecutorService