Встречается на собеседованиях • сегодня

В чем разница между sleep, wait и yield

sleep() приостанавливает выполнение текущего потока на указанное время, не освобождая монитор. Используется для паузы без синхронизации.

java
Thread.sleep(1000); // поток спит 1 секунду

wait() освобождает монитор и переводит поток в ожидание, пока другой поток не вызовет notify()/notifyAll(). Должен вызываться внутри synchronized блока.

java
synchronized (lock) {
    lock.wait(); // освобождает lock и ждет
}

yield() предлагает планировщику потоков переключиться на другой поток, но не гарантирует этого. Используется редко, для "вежливой" уступки CPU.

java
Thread.yield(); // "может быть" переключит поток

Ключевое отличие: sleep() не освобождает монитор, wait() освобождает, а yield() просто намекает на возможность переключения.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы