Как загнать поток в состояние WAITING и TIMED_WAITING, в чём разница?

WAITING означает ожидание без заданного срока, TIMED_WAITING — с ограничением времени. Их вызывают, например, wait/join без timeout и sleep/wait/join с timeout соответственно.

Короткий ответ

Что ответить на собеседовании

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, поэтому пробуждение не означает немедленного выполнения пользовательского кода.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее