Me preguntaba por qué los hilos se despiertan espontáneamente de wait() en java.
¿Es una decisión de diseño? ¿Es un compromiso?¿Por qué los hilos se despiertan espontáneamente de wait()?
EDIT: (. Desde Java concurrencia en la práctica, p 300)
wait
siquiera se le permite regresar "falsamente" - no en respuesta a cualquier hilo llamando a notificar.
Además, el estado de los autores:
esto es como una tostadora con una conexión suelta que hace que la campana se apaga cuando el pan está listo, pero también veces cuando no está listo.
Es por eso que siempre se tiene que codificar como
synchronized(this){
while(!condition)
wait();
}
}
y nunca
synchronized(this){
if(!condition){
wait();
}
}
Incluso si las transiciones de condición sólo de false
a true
.
No, por favor, consulte mi edición .. –
De acuerdo, borré mi comentario, porque parece que tiene razón. –