Sobes.tech
Junior — Middle
115

Hoe verschillen de functies wait() en sleep() in de context van het beheer van threads of processen?

Bedrijven waar gevraagd werd
СБЕРСБЕР

Antwoord van AI

sobes.tech AI

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

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

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

Пример в Java:

synchronized(lock) {
    while (!condition) {
        lock.wait(); // поток ждёт и освобождает блокировку
    }
    // выполняется после уведомления
}

// sleep пример
Thread.sleep(1000); // поток просто приостанавливается на 1 секунду

Итого:

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