模块 java.base
Package java.util.concurrent.locks
接口和类,提供用于锁定和等待与内置同步和监视器不同的条件的框架。 该框架在锁和条件的使用方面允许更大的灵活性,代价是更笨拙的语法。
Lock
接口支持语义不同的锁定规则(可重入,公平等),并且可用于非块结构的上下文,包括手动和锁定重新排序算法。 主要实现是ReentrantLock
。
ReadWriteLock
接口类似地定义了可以在读取器之间共享的锁,但是对于编写者是独占的。 仅提供单个实现ReentrantReadWriteLock
,因为它涵盖了大多数标准使用上下文。 但是程序员可以创建自己的实现来覆盖非标准需求。
Condition
接口描述了可能与锁相关联的条件变量。 它们与使用Object.wait
访问的隐式监视器的用法类似,但提供扩展功能。 特别是,多个Condition
对象可能与单个Lock
相关联。 为避免兼容性问题, Condition
方法的名称与对应的Object
版本不同。
AbstractQueuedSynchronizer
类用作定义依赖于排队阻塞线程的锁和其他同步器的有用超类。 AbstractQueuedLongSynchronizer
类提供相同的功能,但扩展了对64位同步状态的支持。 两者都扩展了类AbstractOwnableSynchronizer
,这是一个简单的类,可以帮助记录当前持有独占同步的线程。 LockSupport
类提供了较低级别的阻塞和解除阻止支持,这对于那些实现自己的自定义锁类的开发人员非常有用。
- 从以下版本开始:
- 1.5
-
接口摘要 接口 描述 Condition 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 A capability-based lock with three modes for controlling read/write access.