Я читал, что вы должны помещать вызовы Object.wait()
в Java в цикле while. Причина в том, что этот поток может быть разбужен, и условие, которое вы ожидали оповестить, по-прежнему ложно (ложное пробуждение).
Как насчет Object.wait(long timeout)
. Здесь вы не хотите зацикливаться на этом состоянии, так как вы хотите, чтобы он отключился после указанного количества времени. Но если вы не поместите его в цикл, то как вы можете убедиться, что он не будет разбужен раньше?