Module
java.base
Package java.util.concurrent.locks
接口和类提供了一个框架,用于锁定和等待与内置同步和监视器不同的条件。
该框架在使用锁和条件方面允许更大的灵活性,而牺牲了更尴尬的语法。
Lock
接口支持语义(可重入,公平等)不同的锁定规则,可用于非块结构上下文中,包括手持和锁重新排序算法。 主要实现为ReentrantLock
。
ReadWriteLock
接口类似地定义了可能在读者之间共享的锁,但是作者是排他性的。 只提供一个单一的实现, ReentrantReadWriteLock
,因为它涵盖了大多数标准的使用上下文。 但程序员可能会创建自己的实现来覆盖非标准要求。
Condition
接口描述可能与锁相关联的条件变量。 这些使用方式与使用Object.wait
访问的隐式监视器Object.wait
,但提供扩展功能。 特别地,多个Condition
对象可以与单个Lock
相关联。 为避免兼容性问题, Condition
方法的名称与相应的Object
版本不同。
AbstractQueuedSynchronizer
类用作定义锁和其他依赖排队阻塞线程的同步器的有用超类。 AbstractQueuedLongSynchronizer
类提供相同的功能,但扩展了对64位同步状态的支持。 两者都扩展类AbstractOwnableSynchronizer
,一个简单的类,有助于记录当前持有排他同步的线程。 LockSupport
类提供了较低级别的阻塞和解除阻止支持,对于那些开发自己的定制锁类的开发人员来说,这是非常有用的。
- 从以下版本开始:
- 1.5
-
接口摘要 接口 描述 Condition Lock Lock
实现提供比使用synchronized
方法和语句可以获得的更广泛的锁定操作。ReadWriteLock AReadWriteLock
维护一对关联的locks
,一个用于只读操作,一个用于写入。 -
类摘要 Class 描述 AbstractOwnableSynchronizer 可以由线程专有的同步器。AbstractQueuedLongSynchronizer 的一个版本AbstractQueuedSynchronizer
,其中同步状态保持为long
。AbstractQueuedSynchronizer 提供一个框架,用于实现依赖先进先出(FIFO)等待队列的阻塞锁和相关同步器(信号量,事件等)。LockSupport 用于创建锁和其他同步类的基本线程阻塞原语。ReentrantLock 具有与使用synchronized
方法和语句访问的隐式监视锁相同的基本行为和语义的可重入互斥Lock
,但具有扩展功能。ReentrantReadWriteLock 一个ReadWriteLock
的实现支持类似的语义到ReentrantLock
。ReentrantReadWriteLock.ReadLock 该锁由方法ReentrantReadWriteLock.readLock()
返回。ReentrantReadWriteLock.WriteLock StampedLock A capability-based lock with three modes for controlling read/write access.