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 из-за требований встроенного проекта. Я не могу использовать Условие , так как оно доступно только после 1.5.

Заранее спасибо.

9
задан M S 18 November 2011 в 06:22
поделиться