Пакет java.util.concurrent.locks
Интерфейсы и классы, предоставляющие фреймворк для блокировки и ожидания условий, отличный от встроенной синхронизации и мониторов.
См.: Описание
| Интерфейс | Описание |
|---|---|
| Condition |
|
| Lock |
|
| ReadWriteLock |
|
| Класс | Описание |
|---|---|
| AbstractOwnableSynchronizer | Синхронизатор, который может быть эксклюзивно владения нитью. |
| AbstractQueuedLongSynchronizer | Версия |
| AbstractQueuedSynchronizer | Предоставляет фреймворк для реализации блокирующих замков и связанных синхронизаторов (семафоры, события и т.д.), которые полагаются на очереди ожидания нитей «первым пришёл — первым обслужен» (FIFO). |
| LockSupport | Базовые примитивы блокирования потоков для создания замков и других классов синхронизации. |
| ReentrantLock | Взаимный исключающий замок с повторным вхождением, имеющий такое же базовое поведение и семантику, как неявный замок-монитор, доступный с использованием |
| ReentrantReadWriteLock | Реализация |
| ReentrantReadWriteLock.ReadLock | Замок, возвращаемый методом |
| ReentrantReadWriteLock.WriteLock | Замок, возвращаемый методом |
| StampedLock | Замок на основе возможностей с тремя режимами для управления доступом чтения/записи. |
Пакет java.util.concurrent.locks Описание
Интерфейсы и классы, предоставляющие фреймворк для блокировки и ожидания условий, отличный от встроенной синхронизации и мониторов. Этот фреймворк допускает гораздо большую гибкость в использовании замков и условий, ценой более громоздкого синтаксиса.
Интерфейс Lock поддерживает дисциплины блокировки, отличающиеся по семантике (рекурсивный, справедливый и т.д.) и которые могут быть использованы в контекстах без блочной структуры, включая алгоритмы передачи «из руки в руку» и переупорядочения замков. Основная реализация - ReentrantLock.
Интерфейс ReadWriteLock аналогичным образом определяет замки, которые могут быть совместно использованы читателями, но являются эксклюзивными для записывающего. Предоставляется только одна реализация, ReentrantReadWriteLock, так как она охватывает большинство стандартных контекстов использования. Но программисты могут создавать собственные реализации, чтобы охватить нестандартные требования.
Интерфейс Condition описывает переменные условия, которые могут быть связаны с замками. Они аналогичны по использованию неявным мониторам, доступным с использованием Object.wait, но предлагают расширенные возможности. В частности, несколько Condition объектов могут быть связаны с одним Lock. Чтобы избежать проблем совместимости, имена методов Condition отличаются от соответствующих версий Object.
Класс AbstractQueuedSynchronizer служит полезным суперклассом для определения замков и других синхронизаторов, которые полагаются на очереди заблокированных потоков. Класс AbstractQueuedLongSynchronizer предоставляет те же функции, но расширяет поддержку до 64 битов состояния синхронизации. Оба наследуются от класса AbstractOwnableSynchronizer, простого класса, который помогает записывать нить, в настоящее время владеющую эксклюзивной синхронизацией. Класс LockSupport предоставляет поддержку блокировки и разблокировки на более низком уровне, которая полезна для разработчиков, реализующих собственные настраиваемые классы замков.
- С момента:
- 1.5
© 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.