Java: Cómo distinguir entre la activación espuria y el tiempo de espera en espera ()
Aquí hay un caso en el que un hilo está esperando notificar () o un tiempo de espera. Aquí se agrega un bucle while para manejar el despertar espurio.
boolean dosleep = true;
while (dosleep){
try {
wait(2000);
/**
* Write some code here so that
* if it is spurious wakeup, go back and sleep.
* or if it is timeout, get out of the loop.
*/
} catch (InterruptedException e) {
e.printStackTrace();
}
}
En este caso, ¿cómo puedo distinguir entre un falso despertar y un tiempo de espera? Si es un despertar espurio, necesito regresar y esperar. Y si es un tiempo de espera, necesito salir del circuito.
Puedo identificar fácilmente el caso de notify (), porque estableceré la variable dosleep en false mientras notifique la llamada ().
EDIT: estoy usando la versión 1.4 java, debido a un requisito de proyecto incorporado. No puedo usarCondition
ya que solo está disponible la publicación 1.5.
Gracias por adelantado