Пакет java.util.concurrent.locks

Интерфейсы и классы, предоставляющие структуру для блокировки и ожидания условий, отличную от встроенной синхронизации и мониторов. Данная структура предоставляет значительно большую гибкость в использовании блокировок и условий, но при этом синтаксис может быть более громоздким.

Интерфейс Lock поддерживает дисциплины блокировки, которые различаются по семантике (рекурсивная, справедливая и т. д.), и которые могут использоваться в контекстах, не основанных на блоках, включая алгоритмы передачи по цепочке и переупорядочения блокировок. Основная реализация — ReentrantLock.

Интерфейс ReadWriteLock аналогичным образом определяет блокировки, которые могут быть совместно использованы читателями, но являются исключительными для писателей. Представлена только одна реализация, ReentrantReadWriteLock, так как она покрывает большинство стандартных контекстов использования. Однако программисты могут создавать свои собственные реализации для удовлетворения нестандартных требований.

Интерфейс Condition описывает переменные условия, которые могут быть связаны с блокировками. Они похожи по использованию на неявные мониторы, к которым можно получить доступ с помощью Object.wait, но предлагают расширенные возможности. В частности, несколько Condition объектов могут быть связаны с одной Lock. Для избежания проблем совместимости имена методов Condition отличаются от соответствующих версий Object.

Класс AbstractQueuedSynchronizer служит полезным суперклассом для определения блокировок и других синхронизаторов, которые полагаются на очереди приостановленных потоков. Класс AbstractQueuedLongSynchronizer предоставляет ту же функциональность, но расширяет поддержку до 64 бит состояния синхронизации. Оба наследуют от класса AbstractOwnableSynchronizer, простого класса, который помогает записывать поток, который в данный момент владеет эксклюзивной синхронизацией. Класс LockSupport предоставляет поддержку блокировки и разблокировки на более низком уровне, что полезно для разработчиков, реализующих собственные настраиваемые классы блокировок.

Since:
1.5
Интерфейс Описание
Condition

Condition выделяет методы монитора Object (wait, notify и notifyAll) в отдельные объекты, чтобы получить эффект наличия нескольких наборов ожидания на объект, объединяя их с использованием произвольных реализаций Lock.

Lock

Lock реализации предоставляют более расширенные операции блокировки, чем можно получить с помощью методов и операторов synchronized.

ReadWriteLock

ReadWriteLock поддерживает пару связанных locks, одну для операций чтения и одну для записи.

Класс Описание
AbstractOwnableSynchronizer

Синхронизатор, который может быть эксклюзивно владения потоком.

AbstractQueuedLongSynchronizer

Версия AbstractQueuedSynchronizer, в которой состояние синхронизации поддерживается как long.

AbstractQueuedSynchronizer

Предоставляет структуру для реализации блокирующих блокировок и связанных синхронизаторов (семафоры, события и т. д.), которые полагаются на очереди ожидания потоков в порядке очереди (FIFO).

LockSupport

Базовые примитивы блокировки потоков для создания блокировок и других классов синхронизации.

ReentrantLock

Рекурсивная взаимная исключающая Lock с тем же основным поведением и семантикой, что и неявная блокировка монитора, к которой можно получить доступ с помощью методов и операторов synchronized, но с расширенными возможностями.

ReentrantReadWriteLock

Реализация ReadWriteLock, поддерживающая аналогичную семантику, что и ReentrantLock.

ReentrantReadWriteLock.ReadLock

Блокировка, возвращаемая методом ReadWriteLock.readLock().

ReentrantReadWriteLock.WriteLock

Блокировка, возвращаемая методом ReadWriteLock.writeLock().

StampedLock

Блокировка на основе возможностей с тремя режимами управления доступом чтения/записи.

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/locks/package-summary.html

Spec-Zone .ru
спецификации, руководства, описания, API