Принадлежность
🔸
sleep() — относится к классу Thread🔸
wait() — относится к классу ObjectНазначение
🔸
sleep() используется для приостановки потока на фиксированное время🔸
wait() используется для взаимодействия между потоками (межпоточная сигнализация)Блокировка
🔸
sleep() не освобождает монитор (lock остаётся удержанным)🔸
wait() освобождает монитор (lock)Когда использовать
🔸
sleep() — когда нужно просто отложить выполнение потока🔸
wait() — когда один поток должен ожидать сигнал от другого потокаНужен ли synchronized-блок?
🔸
sleep() — нет🔸
wait() — да, должен вызываться внутри synchronized-блока или методаМожет быть прерван?
🔸
sleep() — да, выбрасывает InterruptedException🔸
wait() — да, выбрасывает InterruptedExceptionКогда возобновляется
🔸
sleep() — после указанного времени🔸
wait() — после вызова notify()/notifyAll() или при прерыванииСтатический или экземплярный метод?
🔸
sleep() — статический метод, вызывается как Thread.sleep()🔸
wait() — метод экземпляра, вызывается на объекте: obj.wait()👉 Java Portal
