English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

La diferencia entre Wait y Sleep en Java

Wait()-El hilo libera la propiedad del monitor y espera hasta que otro hilo notifique al monitor del objeto mediante la llamadanotify()método onotifyAll()El método despierta el hilo. Luego, el hilo espera hasta que pueda recuperar la propiedad del monitor y continuar la ejecución.

Sleep()-Este método hace que el hilo que se está ejecutando actual entre en estado de sueño (deteniéndose temporalmente) durante el número especificado de milisegundos. Este hilo no perderá la propiedad de ningún monitor. Se enviará el hilo actual al estado 'no ejecutable' durante el tiempo especificado.

númeroclaveesperardormir
1
clase 
El método Wait() pertenece a la clase Object 
El método Sleep() pertenece a la clase Thread 
2
Liberación de bloqueo 
Wait() liberará el bloqueo del objeto 
No liberará el bloqueo del objeto 
3
contexto de llamada
Se puede llamar a Wait() en el objeto mismo 
Se puede llamar a Sleep() en el hilo 
4.
condición de despertar
hasta quenotify(),notifyAll()desde el objeto
hasta que al menos el tiempo expire o la comunicación se interrumpa
5
Despiertos falsos 
El programa puede producir despiertos falsos 
No producirá despiertos falsos.

Ejemplo de SynchronizedMap

synchronized(lockedObject){
   while(condition == true){
      lockedObject.wait() //libera el bloqueo del objeto bloqueado
   }
   Thread.sleep(100); //pone el hilo actual en Sleep
}