如何检查线程是否处于休眠状态?

2022-09-04 01:00:43

有没有办法检查给定的线程是否处于休眠状态?


答案 1

您可以调用 Thread.getState() on 并检查状态是否为 TIMED_WAITING

但是,请注意,这并不一定意味着名为sleep()的线程,它也可以在Object.wait(long)调用或类似的东西中等待。TIMED_WAITING


答案 2

这是一个丑陋的黑客来检查另一个线程是否正在休眠(调用):Thread.sleep

public static boolean isSleeping(Thread t) {
    StackTraceElement[] ste = t.getStackTrace();

    return ste.length > 0
        && ste[0].getClassName().equals("java.lang.Thread")
        && ste[0].getMethodName().equals("sleep");
}