Sobes.tech
Назад к вопросам
Junior — Middle
59

Чем отличаются методы sleep() и wait() в программировании, и в каких ситуациях их применение различается?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

Методы sleep() и wait() в Java используются для приостановки выполнения потока, но имеют принципиальные отличия:

  • sleep() — статический метод класса Thread. Он приостанавливает текущий поток на заданное время, не освобождая монитор (блокировку). После истечения времени поток автоматически возобновляет работу.

  • wait() — метод объекта, вызывается на объекте, и поток, вызвавший wait(), освобождает монитор этого объекта и переходит в состояние ожидания, пока другой поток не вызовет notify() или notifyAll() на том же объекте.

Основные различия:

  1. sleep() не требует владения монитором, wait() — требует (обычно вызывается внутри synchronized блока).
  2. sleep() приостанавливает поток на фиксированное время, wait() — до уведомления.
  3. wait() освобождает монитор, позволяя другим потокам войти в синхронизированный блок, sleep() — нет.

Когда использовать:

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