TGViewer
Senior Java Developer Senior Java Developer @seniorjavist · 20.6K subscribers
Post #4073 1.77K
#вопросы_с_собеседований
Как работают методы wait() и notify()(notifyAll())?

Эти методы определены у класса Object и предназначены для взаимодействия потоков между собой при межпоточной синхронизации.

• wait(): освобождает монитор и переводит вызывающий поток в состояние ожидания до тех пор, пока другой поток не вызовет метод notify()/notifyAll();
• notify(): продолжает работу потока, у которого ранее был вызван метод wait();
• notifyAll(): возобновляет работу всех потоков, у которых ранее был вызван метод wait().

Когда вызван метод wait(), поток освобождает блокировку на объекте и переходит из состояния Работающий (Running) в состояние Ожидания (Waiting). Метод notify() подаёт сигнал одному из потоков, ожидающих на объекте, чтобы перейти в состояние Работоспособный (Runnable). При этом невозможно определить, какой из ожидающих потоков должен стать работоспособным. Метод notifyAll() заставляет все ожидающие потоки для объекта вернуться в состояние Работоспособный (Runnable). Если ни один поток не находится в ожидании на методе wait(), то при вызове notify() или notifyAll() ничего не происходит.

Поток может вызвать методы wait() или notify() для определённого объекта, только если он в данный момент имеет блокировку на этот объект. wait(), notify() и notifyAll() должны вызываться только из синхронизированного кода.
More from @seniorjavist
  1. Oct 10, 2026➡️ MapStruct MapStruct — это библиотека для автоматического преобразования данных между Ja…
  2. Oct 9, 2026➡️ Objenesis Objenesis — это Java-библиотека, которая позволяет создавать объекты классов…
  3. Oct 8, 2026➡️ JCTools JCTools (Java Concurrency Tools) — это библиотека, специализирующаяся на высоко…
  4. Oct 6, 2026⚠️ Избегайте конкатенации строк в больших циклах При добавлении двух строк в цикле (for, w…
  5. Oct 6, 2026🤺 Почему ты получаешь отказ после «норм собеса»? Дело не в знаниях — ты просто не знаешь,…
  6. Oct 5, 2026➡️ Zt-Exec — простая и удобная работа с процессами в Java Zt-Exec — это легковесная библио…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →