Вот случай, когда поток ожидает notify () или тайм-аута. Здесь добавлен цикл while для обработки ложного пробуждения.
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();
}
}
Как в этом случае отличить ложное пробуждение от тайм-аута? Если это ложное пробуждение, мне нужно вернуться и подождать. И если это тайм-аут, мне нужно выйти из цикла.
Я могу легко определить случай notify (), потому что я буду устанавливать для переменной dosleep значение false во время вызова notify ().
РЕДАКТИРОВАТЬ: я использую версию Java 1.4 из-за требований встроенного проекта. Я не могу использовать Условие
, так как оно доступно только после 1.5.
Заранее спасибо.