Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: wait, notify

Что такое wait() и notify()?

Вопрос проверяет понимание базовых механизмов синхронизации и взаимодействия потоков в Java.

Короткий ответ

wait() и notify() используются для координации работы потоков через общий объект. wait() переводит поток в состояние ожидания, освобождая монитор. notify() будит один из ожидающих потоков. Эти методы работают только в контексте синхронизации.

Длинный ответ

Для корректного взаимодействия потоков Java предоставляет механизм ожидания и оповещения.

Общая идея работы

Определение:
wait() и notify() — это методы класса Object, предназначенные для взаимодействия потоков через монитор объекта.

Основная логика:

  • один поток ждет выполнения условия

  • другой поток изменяет состояние и уведомляет ожидающих

wait()

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

Особенности:

  • поток освобождает монитор объекта

  • поток переходит в состояние ожидания

  • выполнение продолжается после уведомления

synchronized (lock) {
    while (!condition) {
        lock.wait();
    }
    // выполнение после уведомления
}

notify()

notify() используется для пробуждения одного ожидающего потока.

Особенности:

  • пробуждается случайный ожидающий поток

  • монитор не освобождается сразу

  • поток продолжит выполнение после выхода из synchronized-блока

synchronized (lock) {
    condition = true;
    lock.notify();
}

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

  • всегда использовать while, а не if

  • wait() и notify() работают только с монитором

  • возможны ложные пробуждения

Краткий вывод

wait() и notify() позволяют потокам координировать работу, но требуют строгого соблюдения правил синхронизации.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Java

    Java

Ключевые слова

#wait

#notify

Подпишись на Java Developer в телеграм