Diferencia entre sueño y espera

Java tiene varios métodos para llevar a cabo ciertas acciones. El método es un grupo de código, que se ejecuta solo cuando se llama; y puede o no devolver un resultado.

Los métodos como dormir y esperar se utilizan para la subprocesamiento múltiple. Ambos hacen una pausa y envían el hilo a la espera, pero tienen grandes diferencias en el funcionamiento.

Suspensión vs Espera

La principal diferencia entre el método de suspensión ( ) y la espera ( ) ( ) se utiliza en el programa para pausar la ejecución del hilo actual durante un tiempo particular período mientras se usa el método de espera ( ) en el programa para pausar o suspender el subproceso actual hasta que se invoquen métodos específicos.

Durante el uso del método de suspensión, el hilo actual no pierde la propiedad del monitor. El sueño es un método estático y es parte del hilo de clase. Después de que termina el tiempo de espera, el hilo vuelve al estado ejecutable original. Asegura la utilización completa de la CPU, mientras espera.

Mientras que el método wait ( ) se usa en el programa Java para ordenar que el hilo actual espere, hasta que no se invoque otro hilo para ese objeto. El hilo continúa con la ejecución, una vez que obtiene el control del monitor. No es un método estático a diferencia del sueño, y es parte de la clase de objeto.

Tabla de comparación entre el sueño y la espera

Parámetros de comparaciónSleepWaitClass El método de suspensión es parte de la clase de hilo El método de espera es parte de la clase de objeto Tipo de método El sueño es un método estático La espera no es un método estático Técnica de llamada El método de suspensión puede ser llamado desde fuera del contexto sincronizado El método de espera solo se puede llamar desde el contexto sincronizado Lanzamiento de bloqueo El método de suspensión no libera el bloqueo en el objeto, durante el tiempo de espera especificado, durante la sincronización El método Wait libera el bloqueo en el objeto, para tener la oportunidad de ejecutarlo, durante la sincronización Declaración de suspensión pública estática nula ( ) espera pública final nula ( )

Te puede interesar:  Diferencia entre XLS y XLSX

¿Qué es el sueño?

El subproceso sleep ( ) es un método estático en el programa Java que suspende el subproceso actual y lo pone en estado de espera durante un período de tiempo estipulado. Una vez que finaliza el estado de espera y la hora, la condición del hilo se cambia a estado ejecutable. Y luego espera a la CPU para una mayor ejecución.

El objetivo de este método es crear un retraso durante unos segundos en el programa y, simultáneamente, tener la máxima utilización de la CPU. Si el sistema está ocupado o sobrecargado, el tiempo de espera o pausa es mayor y, de lo contrario, sería menor o igual al tiempo real.

El tipo de retorno del método de suspensión se puede decir nulo, ya que no devuelve ningún valor. El hilo de dormir no pierde el monitor ni bloquea el hilo que ya ha adquirido. Si en cualquier caso se altera el sueño, el hilo arrojaría Interrupted_Exception. La duración real durante la cual el hilo se dormiría generalmente depende de los programadores y temporizadores del sistema que forman parte del sistema operativo.

La sintaxis del método del sueño es – sueño público estático vacío ( milisegundos largos )

suspensión pública estática vacía ( milisegundos largos, nanosegundos int )

Aquí milisegundos y nanosegundos es el momento en que el hilo dormiría.

¿Qué es la espera?

La espera ( ) es un método utilizado para la comunicación entre hilos. Siempre que se use el hilo wait ( ), el hilo de llamada o actual se detiene y suspende, hasta que se invoquen en el sistema métodos como notify ( ) (. )

Te puede interesar:  Diferencia entre equipos de Microsoft y SharePoint

El método

notifica ( ) despertaría el hilo especificado mientras que notifyAll ( ) es aplicable para cada hilo. Cuando está sincronizado, el método de espera abandona el bloqueo a los recursos. No hay valor de retorno del método Wait, por lo tanto, se puede decir que devuelve nulo.

Las dos excepciones del método Wait son Interrupted_Exception ( cuando el hilo actual se interrumpe durante su suspensión ) e IllegalMonitorStateException ( cuando el hilo actual no es el propietario del objeto en monitor ).

El método Wait es parte de la clase de objeto. El método solo es aplicable y se puede llamar a través de un bloque sincronizado. El método de espera libera la pantalla suspendida o bloqueada durante la sincronización. Y el método Wait permite exclusivamente que los subprocesos múltiples sincronizados accedan al mismo objeto uno por uno.

La sintaxis del método Wait es – público final nulo espera ( )

Diferencias principales entre el sueño y la espera

  1. El método Sleep hace que el hilo se duerma durante un período de tiempo específico y particular, generalmente durante un tiempo de espera especificado, a menos que expire o se interrumpa mientras el método Wait hace que el hilo se duerma hasta los métodos como notificar ( ) o notificar Todos ( ) se invocan
  2. El método Sleep se ejecuta en un hilo mientras el método Wait se ejecuta en un objeto.
  3. El método Sleep se usa para sincronización de tiempo mientras que el método Wait se usa para sincronización de subprocesos múltiples.
  4. Durante el hilo de espera, los subprocesos múltiples sincronizados pueden acceder al mismo objeto de forma adyacente mientras que en el subproceso de suspensión, los subprocesos múltiples sincronizados tienen que esperar a que se supere el sonido del subproceso actual.
  5. El método Wait establece el bloqueo o el monitor libres, mientras que el método Sleep no libera el monitor durante el sueño o la espera del hilo actual.
Te puede interesar:  Diferencia entre Apache y Tomcat

Síntesis

El método Sleep and Wait son métodos nativos de Java. Y ambos se usan ampliamente para hacer que el hilo actual en curso entre en un estado de condición no ejecutable. Ambos métodos se utilizan para subprocesos múltiples en el programa.

El método

Sleep proporciona la opción exclusiva de bloquear la pantalla durante un tiempo específico que generalmente dura desde nanosegundos hasta milisegundos. Pero el método de espera bloquea o suspende la pantalla hasta que se invoca otro método, por lo tanto, la duración del tiempo no sigue siendo específica como durante el uso del método de suspensión.

Se diferencian entre sí en términos de funcionamiento específico como clase, método, sincronización y la duración de la retención y liberación del bloqueo y varios otros parámetros. A menudo, los programadores se confunden sobre qué método podría ser ideal para dormir el hilo. El uso de los métodos depende de requisitos como la necesidad, la urgencia y el período de tiempo del hilo actual.

  1. https://pdfs.semanticscholar.org/51fd/24ae444910fd39b117bb3044a12591f038fa.pdf
  2. https://dl.acm.org/doi/pdf/10.1145/289524.289572

Contenido

Deja un comentario