2011-03-17 13 views
10

¿Hay alguna manera de verificar si un hilo dado está durmiendo?¿Cómo comprobar si un hilo está durmiendo?

+2

Atrévete Pregunta por qué necesitas esta información? –

+0

es el Thread.sleep() llamado desde su código. en el hilo de saber está durmiendo lo que quieres lograr? –

Respuesta

16

Puede llamar al Thread.getState() y comprobar si el estado es TIMED_WAITING.

Tenga en cuenta, sin embargo, que TIMED_WAITING no significa necesariamente que el hilo llamado sleep(), también podría estar esperando en una llamada Object.wait(long) o algo similar.

+0

¿Alguna idea sobre el tiempo (cómo) el hilo largo está esperando? –

0

No estoy seguro de si hay una manera mejor, pero puede cambiar una variable cuando un hilo se va a dormir y verificar esa variable si el hilo está durmiendo o no.

0

Se puede crear su propio sueño método que registra el ID del hilo a una variable global y utilizarlo como referencia para el hilo de dormir.

No hay otra manera de saber si un hilo está durmiendo con precisión.

Esperanza los tres enlaces a continuación ayuda:

3

He aquí un truco bastante fea para comprobar si el otro hilo está durmiendo:

+0

ParkSupport/Unsafe.park también hace que el hilo duerma – bestsss

+0

¿Qué es ParkSupport y Unsafe.park? – aioobe

+0

doh Siempre confundo "java.util.concurrent.locks.LockSupport" con "ParkSupport"; la impl, en sí misma, está en sun.misc.Unsafe.park – bestsss

Cuestiones relacionadas