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.

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

Ответы на вопрос(3)

Ваш ответ на вопрос