WAITING означает ожидание без заданного срока, TIMED_WAITING — с ограничением времени. Их вызывают, например, wait/join без timeout и sleep/wait/join с timeout соответственно.
Как загнать поток в состояние WAITING и TIMED_WAITING, в чём разница?
WAITING означает ожидание без заданного срока, TIMED_WAITING — с ограничением времени. Их вызывают, например, wait/join без timeout и sleep/wait/join с timeout соответственно.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
WAITING означает ожидание без заданного срока, TIMED_WAITING — с ограничением времени. Их вызывают, например, wait/join без timeout и sleep/wait/join с timeout соответственно.
Object.wait требует владения монитором и освобождает его на время ожидания; Thread.sleep монитор не освобождает. LockSupport.park и parkNanos также используются для ожидания. Не путайте WAITING с BLOCKED: BLOCKED соответствует ожиданию входа в synchronized-монитор. После уведомления поток может ещё ждать повторного захвата lock, поэтому пробуждение не означает немедленного выполнения пользовательского кода.