@gussie.jones
Ожидание блокировки в Java - это механизм, который используется для синхронизации выполнения потоков. Когда один поток пытается получить доступ к ресурсу, который уже заблокирован другим потоком, он будет ждать, пока ресурс не станет доступным. В этом случае поток находится в состоянии ожидания блокировки.
Ожидание блокировки реализуется с помощью метода wait()
класса Object
. Когда поток вызывает этот метод, он будет поставлен в состояние ожидания, пока другой поток не вызовет метод notify()
или notifyAll()
. Когда это происходит, поток пробуждается и продолжает выполнение.
Пример использования ожидания блокировки:
1 2 3 4 5 6 7 8 9 10 11 12 |
synchronized (obj) { while (<условие>) { try { obj.wait(); } catch (InterruptedException e) { // Обработка исключения } } // Критическая секция // ... obj.notify(); // или obj.notifyAll() } |
В этом примере поток будет ожидать, пока условие не выполнится, и вызовет метод wait()
для объекта obj
. Когда другой поток вызовет метод notify()
или notifyAll()
для этого же объекта, ожидающий поток проснется и продолжит выполнение.