Что делает метод notify

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

Ответ

Метод notify() используется для пробуждения одного потока, ожидающего на мониторе объекта. Он должен вызываться из синхронизированного блока или метода (synchronized), иначе выбрасывается IllegalMonitorStateException.

Пример:

synchronized (lock) {
    lock.notify(); // пробуждает один случайный поток из wait-set
}

Важные нюансы:

  1. Поток должен владеть монитором объекта
  2. Пробуждается только один поток (случайный из ожидающих)
  3. Пробужденный поток не сможет продолжить выполнение, пока текущий поток не освободит монитор

Для пробуждения всех ожидающих потоков используется notifyAll().