Найти тему
DEBAGanov

Java 502. В чем разница между состояниями WAITING и TIMED_WAITING?

Состояние WAITING и состояние TIMED_WAITING являются состояниями ожидания потока в Java, однако у них есть различия.

Когда поток вызывает метод wait(), join() или park(), он переходит в состояние WAITING. В этом состоянии поток ожидает уведомления от другого потока для продолжения своей работы. Например, если поток вызвал метод wait(), он будет ждать, пока другой поток не вызовет метод notify() или notifyAll() на том же самом объекте.

С другой стороны, когда поток вызывает метод sleep(), wait(timeout) или join(timeout), он переходит в состояние TIMED_WAITING (ожидание с тайм-аутом). В этом состоянии поток ожидает определенное время перед продолжением своей работы.

Таким образом, основная разница между состояниями WAITING и TIMED_WAITING заключается в том, что состояние TIMED_WAITING означает, что поток ждет определенное количество времени, а состояние WAITING - что поток ждет уведомления от другого потока.

Например, если поток вызвал метод sleep(), то он будет приостановлен на указанное количество времени, после чего вернется в состояние RUNNABLE и продолжит свое выполнение. А если поток вызвал метод wait(), то он будет ожидать уведомления от другого потока до тех пор, пока не будет вызван метод notify() или notifyAll().

1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions

Tелеграмм канал: https://t.me/DEBAGanov

Мое резюме: https://github.com/DEBAGanov