esperar, notificar, el sueño, la interrupción de Comparación

copia de:  http://gityuan.com/2016/01/03/java-thread-wait-sleep/

Análisis comparativo de los diferentes hilos relacionados que esperar Java (), notificar (), el sueño (), de interrupción () método

Descripción del método

clase thread

  • sueño: el hilo se está ejecutando actualmente se suspende; (método de clase)
  • Rendimiento: suspender el hilo está ejecutando actualmente y otros hilos para ejecutar; (método de clase)
  • Ingreso: espera a que dicho hilo;
  • interrupción: interrumpir el hilo de rosca cuando las llamadas wait (), dormir (), cuando la unión () o la operación de E / S, o va a recibir InterruptedException ClosedByInterruptException;

clase de objeto

  • esperar: Pausa el hilo que se está ejecutando hasta que la llamada para notificar () o el método o el tiempo de espera notifyAll (), salida de espera;
  • notificar: despertar un hilo esperando en el objeto;
  • notifyAll: despertar todos los hilos esperando en el objeto;

El análisis detallado

sueño VS espera

del sueño () y wait () métodos están ejecutando actualmente hilo se suspende, los recursos de CPU venta.

método Pertenece a la clase método Tipo bloqueo Métodos Extracción escena uso
dormir Hilo método estático No suelte cerraduras tiempo de espera, de interrupción ilimitado Control dentro de la rosca
Espere Objeto método no estático Liberar el bloqueo tiempo de espera, notificar, interrupción bloque de instrucciones de sincronización La comunicación entre hilos
public static void sleep(long millis) throws InterruptedException public static void sleep(long millis, int nanos) throws InterruptedException public final void wait() throws InterruptedException public final void wait(long timeout) throws InterruptedException public final void wait(long timeout, int nanos) throws InterruptedException

espere && notificar

Llame a la espera del objeto (), el hilo notificar (), el método notify () debe ser utilizado como el propietario del monitor del este objeto. escenario común es que el bloque interno sincronizado de palabras clave usando estos tres métodos, si un wait (), notify (), notify () método directamente en el hilo, se lanzará una excepción IllegalMonitorStateException, arrojados a indicar que un hilo ha tratado de esperar en el monitor de un objeto o para notificar a otros objetos están a la espera para el monitor sin poseer el hilo monitor especificado. .

Método llamadas hilo wait (), el método de la rosca llamar a interrupción (), que tratará de obtener el bloqueo de objetos. Sólo cuando el objeto es conseguir una cerradura, comenzaron a emitir la excepción apropiada, el programa después de que se ejecute el hilo.

interrumpir

método de interrupción del trabajo () es simplemente para cambiar el estado de interrupción, no directamente de interrupción del hilo en funcionamiento. principio real se interrumpe cuando el hilo es Object.wait (), cuando el método para cambiar el estado de alarma, Thread.join () u obstrucción método sleep (), llamando interrupción () mientras que el interior de estos métodos esperar / join / sueño constantemente cheques enhebrar valor de estado de interrupción, encontraron cuando los cambios de interrupción valor de estado tiran InterruptedException anomalía; para el hilo no bloqueado, el método de interrupción de llamar () no tiene efecto.

rendimiento

método de rendimiento () para vender la hora actual ejecución CPU hilo, y cuando no libera los bloqueos mantenidos por el hilo actual. Después método yield () realizar, el estado del hilo se cambia de Ejecución estado ejecutable, ya que es estado ejecutable, también es probable que sea de inmediato volver a entrar en la planificación de la CPU estado Running

Supongo que te gusta

Origin www.cnblogs.com/Oude/p/12550166.html
Recomendado
Clasificación