如何检查线程是否正在运行
答
你可以得到一个线索是什么状态,通过使用返回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]);
}
难道你不能跟踪你的程序内哪个线程当前发布的工作? – Tudor
通常你编写你的算法,所以你不需要检查线程的状态。它仅用于检测应用程序中的错误,而且很少完成。如果你认为你需要这样做,那么很有可能有更好的方法来解决这个问题。 –