Назад к вопросам
СБЕР
Junior — Middle
59
Чем отличаются методы sleep() и wait() в программировании, и в каких ситуациях их применение различается?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Методы sleep() и wait() в Java используются для приостановки выполнения потока, но имеют принципиальные отличия:
-
sleep() — статический метод класса
Thread. Он приостанавливает текущий поток на заданное время, не освобождая монитор (блокировку). После истечения времени поток автоматически возобновляет работу. -
wait() — метод объекта, вызывается на объекте, и поток, вызвавший
wait(), освобождает монитор этого объекта и переходит в состояние ожидания, пока другой поток не вызоветnotify()илиnotifyAll()на том же объекте.
Основные различия:
sleep()не требует владения монитором,wait()— требует (обычно вызывается внутриsynchronizedблока).sleep()приостанавливает поток на фиксированное время,wait()— до уведомления.wait()освобождает монитор, позволяя другим потокам войти в синхронизированный блок,sleep()— нет.
Когда использовать:
sleep()— когда нужно просто приостановить поток на время.wait()— при реализации межпоточного взаимодействия и синхронизации, когда поток ждет определенного условия или события.