РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1022 of 1163 menu

Метод unlock

Метод unlock класса Lock освобождает блокировку, которая была ранее захвачена с помощью метода lock. Метод не принимает параметров и не возвращает значения. Он вызывается из потока, который владеет блокировкой, и снимает её, позволяя другим потокам войти в защищённую секцию. Если вызвать unlock из потока, который не владеет блокировкой, будет выброшено исключение IllegalMonitorStateException.

Метод unlock обычно вызывается в блоке finally, чтобы гарантировать освобождение блокировки даже при возникновении исключения.

Синтаксис

lock.unlock()

Пример

Давайте захватим блокировку, выполним действие и освободим её через unlock:

import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class Main { public static void main(String[] args) { Lock lock = new ReentrantLock(); lock.lock(); try { System.out.println("Locked"); } finally { lock.unlock(); } System.out.println("Unlocked"); } }

Результат выполнения кода:

"Locked" "Unlocked"

Пример

Давайте проверим, что после вызова unlock другой поток может захватить ту же блокировку:

import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class Main { public static void main(String[] args) throws InterruptedException { Lock lock = new ReentrantLock(); Thread t1 = new Thread(() -> { lock.lock(); try { System.out.println("Thread 1 locked"); } finally { lock.unlock(); } }); Thread t2 = new Thread(() -> { lock.lock(); try { System.out.println("Thread 2 locked"); } finally { lock.unlock(); } }); t1.start(); t1.join(); t2.start(); t2.join(); } }

Результат выполнения кода:

"Thread 1 locked" "Thread 2 locked"

Смотрите также

  • метод lock,
    который захватывает блокировку
  • метод tryLock,
    который пытается захватить блокировку без ожидания
  • класс ReentrantLock,
    который реализует интерфейс Lock
  • метод synchronized,
    который обеспечивает встроенную синхронизацию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить