Что такое wait

«Что такое wait» — вопрос из категории Многопоточность, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Пример:

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

Нюансы:

  1. Всегда вызывается внутри synchronized блока.
  2. Может выбросить InterruptedException.
  3. Лучше оборачивать проверку условия в цикл (spurious wakeups).