2012-04-04 10 views
10

¿Cuál es la diferencia entre un hilo estacionado y un hilo de espera en java? Tengo un volcado de núcleo de jboss y el análisis muestra muchos subprocesos estacionados.Hilo estacionado de Java

Respuesta

12

mirada a la Javadocpark() método:

Desactiva el hilo actual para fines de programación hilo a menos que el permiso de está disponible. Si el permiso está disponible, se consume y la llamada vuelve inmediatamente; de lo contrario el hilo actual se convierte en desactivado para fines de programación hilo y permanece latente hasta que uno de tres cosas sucede:

algún otro flujo anular el estacionamiento invoca al subproceso actual como el objetivo ; o Algún otro hilo interrumpe el hilo actual; o El llama falsamente (es decir, sin ningún motivo) devoluciones. Este método no informa cuál de estos hizo que el método retorne. Las personas que llaman deben volver a verificar las condiciones que causaron que el hilo se estacione en el primer lugar . Las personas que llaman también pueden determinar, por ejemplo, el estado de interrupción del hilo a su regreso.

Entonces un hilo estacionado es un hilo bloqueado usando LockSupport.park().

+0

Si bien es la respuesta aceptada, esta respuesta proporciona poca o ninguna intuición sobre la utilidad de 'park' frente a otras opciones – matanster

-1

LockSupport: la clase toma las primitivas básicas de bloqueo de hilos de la instalación para crear bloqueos y otras clases de sincronización.

El método park() deshabilita el subproceso actual para fines de programación de subprocesos a menos que el permiso esté disponible.

unpark (hilo de rosca) pone a disposición el permiso para el hilo dado, si no estaba ya disponible.

Úselo como:
finalmente { LockSupport.unpark (thread); }

Cuestiones relacionadas