Java tiene varios métodos para llevar a cabo ciertas acciones.
Un método es un grupo de código que se ejecuta solo cuando se le llama; y puede o no devolver un resultado.
Métodos como sueño y esperar se utilizan para subprocesos múltiples. Ambos hacen una pausa y envían el hilo a la espera, pero tienen grandes diferencias en el funcionamiento.
Puntos clave
- “Dormir” es un estado de reposo en el que el cuerpo y la mente están inactivos, mientras que “Esperar” es permanecer en un lugar o retrasar la acción hasta que ocurra un evento específico.
- “Dormir” es una función corporal natural y necesaria, mientras que “Esperar” es una acción voluntaria que se puede elegir o evitar.
- El “dormir” se asocia con la noche, mientras que la “espera” puede ocurrir en cualquier momento del día.
Dormir vs Esperar
La diferencia entre el método sleep() y wait() es que el método sleep() se usa en el programa para pausar la ejecución del subproceso actual durante un período de tiempo particular, mientras que el método wait() se usa en el programa para pausar. o suspender el hilo actual hasta que se invoquen métodos específicos.
Durante el uso del método de suspensión, el subproceso actual no pierde la propiedad del monitor.
Sleep es un método estático y es parte del hilo de la clase. Una vez que finaliza el tiempo de espera, el subproceso 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 Java programa para ordenar al subproceso actual que espere hasta que no se invoque otro subproceso para ese objeto.
El subproceso luego continúa con la ejecución una vez que obtiene el control del monitor.
No es un método estático, a diferencia de sleep, y es parte de una clase de objeto.
Tabla de comparación
Parámetros de comparación | Calidad de Sueño | Esperar |
---|---|---|
Clase | El método de suspensión es una parte de la clase de subprocesos. | 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. | Wait no es un método estático |
técnica de llamada | El método de suspensión se puede llamar desde fuera del contexto sincronizado | El método de espera solo se puede llamar desde el contexto sincronizado |
Desbloqueo de bloqueo | El método de suspensión no libera el bloqueo del objeto durante el tiempo de espera especificado durante la sincronización | El método de espera libera el bloqueo del objeto, para tener la oportunidad de ejecutarlo, durante la sincronización |
Declaración | sueño de vacío estático público () | espera vacía final pública () |
¿Que es dormir?
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 el tiempo, la condición del subproceso cambia a un estado ejecutable. Y luego espera a que la CPU siga ejecutándose.
El objetivo de este método es crear un retraso de unos segundos en el programa y, al mismo tiempo, tener la máxima utilización de la CPU.
Si el sistema está ocupado o sobrecargado, entonces el tiempo de espera o pausa es mayor y, de lo contrario, sería menor o igual al tiempo real.
El tipo de devolución del método de suspensión se puede decir nulo, ya que no devuelve ningún valor.
El subproceso de suspensión no pierde el monitor ni bloquea el subproceso que ya ha adquirido.
Si, en cualquier caso, se interrumpe el sueño, el subproceso arrojaría Interrupted_Exception.
El actual duración El motivo por el cual el hilo se suspenderá depende de los programadores y temporizadores del sistema que forman parte del sistema operativo.
La sintaxis del método de suspensión es: suspensión vacía estática pública (milisegundos largos)
sueño de vacío estático público (milisegundos largos, nanosegundos int)
Aquí, milisegundos y nanosegundos son el tiempo durante el cual el subproceso dormiría.
¿Qué es Espera?
Wait() es un método utilizado para la comunicación entre subprocesos.
Cada vez que se utiliza el subproceso wait(), el subproceso actual o de llamada se pausa y se suspende hasta que se invoquen métodos como notificar() o notificarTodos() en el sistema.
El método de notificación () despertaría subprocesos específicos, mientras que el método de notificación () es aplicable para cada subproceso.
Cuando se sincroniza, el método de espera cede el bloqueo de los recursos.
No hay valor de retorno del método Wait, por lo que se puede decir que devuelve void.
Las dos excepciones del método Wait son Interrupted_Exception (cuando el subproceso actual se interrumpe durante su suspensión) e IllegalMonitorStateException (cuando el subproceso actual no es el propietario del objeto en el 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 – public final void wait()
Principales diferencias entre dormir y esperar
- El método Sleep hace que el subproceso entre en suspensión durante un período de tiempo específico y particular, durante un tiempo de espera específico a menos que caduque o se interrumpa, mientras que el método Wait hace que el subproceso entre en suspensión hasta que se invoquen métodos como notify() o notifyAll().
- El método Sleep se ejecuta en un subproceso, mientras que el método Wait se ejecuta en un objeto.
- El método de suspensión se usa para la sincronización de tiempo, mientras que el método de espera se usa para la sincronización de subprocesos múltiples.
- Durante el subproceso 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 termine la suspensión del subproceso actual.
- El método de espera libera el bloqueo o el monitor, mientras que el método de suspensión no libera el monitor durante la suspensión o la espera del subproceso actual.
- https://pdfs.semanticscholar.org/51fd/24ae444910fd39b117bb3044a12591f038fa.pdf
- https://dl.acm.org/doi/pdf/10.1145/289524.289572
Última actualización: 31 julio, 2023
Sandeep Bhandari tiene una Licenciatura en Ingeniería Informática de la Universidad de Thapar (2006). Tiene 20 años de experiencia en el campo de la tecnología. Tiene un gran interés en varios campos técnicos, incluidos los sistemas de bases de datos, las redes informáticas y la programación. Puedes leer más sobre él en su página de biografía.
El artículo aclara eficazmente las variaciones entre los métodos de sueño y espera, proporcionando una comparación clara y concisa. Los detalles de sincronización y liberación de bloqueo son particularmente útiles.
El artículo hace un excelente trabajo al delinear las diferencias entre los métodos de sueño y espera. La información sobre sincronización y apertura de cerradura se presenta con claridad y precisión.
La explicación detallada de los métodos de sueño y espera es excelente. Este artículo es un activo valioso para cualquiera que busque mejorar su comprensión de estos conceptos fundamentales de Java.
Esta es una comparación completa de los métodos de suspensión y espera en Java. El artículo describe claramente las diferencias clave y proporciona una tabla comparativa útil como referencia.
El desglose detallado de los métodos de sueño y espera es muy revelador. Es valioso comprender los matices y funcionalidades de estos métodos en la programación Java.
La explicación de los métodos de dormir y esperar me pareció informativa y precisa. La tabla de comparación es particularmente útil para resumir las características contrastantes de estos métodos.
El artículo ofrece una comparación exhaustiva entre los métodos de suspensión y espera en Java. Agradezco las explicaciones detalladas, que ofrecen información valiosa sobre sus funcionalidades.
El artículo me pareció informativo y bien elaborado. Las explicaciones de los métodos de suspensión y espera conducen a una mejor comprensión de su uso y sus implicaciones en Java.
El artículo ofrece una comparación detallada de los métodos de suspensión y espera, proporcionando información completa sobre sus comportamientos y funcionalidades dentro de la programación Java.
Este artículo es un recurso valioso para comprender los métodos de suspensión y espera en Java. Las explicaciones son detalladas y la tabla comparativa ofrece una referencia conveniente para comprender las disparidades entre estos métodos.
Comparto el mismo sentimiento, Vmorgan. La tabla de comparación proporciona una descripción clara de las diferencias y las descripciones detalladas mejoran la comprensión de los métodos de sueño y espera.
Gracias por el artículo. Agradezco la explicación detallada de las diferencias entre los métodos de suspensión y espera. Es bueno tener una comprensión clara de cómo funcionan en el programa Java.
Tu explicación del concepto está muy bien estructurada y es fácil de entender. Estoy de acuerdo en que es crucial tener claridad sobre estos métodos fundamentales.
La distinción entre los métodos de suspensión y espera se explica detalladamente en este artículo. La explicación del comportamiento del método de espera durante la sincronización me pareció particularmente esclarecedora.
Estoy de acuerdo, Freya. El artículo proporciona una explicación clara y precisa del comportamiento del método de espera, lo que facilita la comprensión de su funcionalidad en Java.
La descripción del artículo sobre los comportamientos y los tipos de retorno de los métodos de suspensión y espera es muy informativa. Comprender estas diferencias es esencial para un subproceso múltiple eficaz en Java.
El artículo me pareció muy informativo y revelador. El análisis en profundidad de los métodos de suspensión y espera contribuye en gran medida a comprender sus matices e implicaciones en Java.
El artículo proporciona un análisis completo de los métodos de suspensión y espera en Java. Las explicaciones están bien organizadas y contribuyen en gran medida a una comprensión más profunda de estos métodos fundamentales.