Java: Как различить ложное пробуждение и тайм-аут ожидания ()
Вот случай, когда поток ожидает 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, из-за требований встроенного проекта. Я не могу использоватьCondition
так как доступен только пост 1.5.
Заранее спасибо.