Module java.base
Package java.util.concurrent.locks
package java.util.concurrent.locks
提供了一个用于锁定和等待条件的框架的接口和类,这个框架与内置的同步和监视器不同。该框架允许在锁和条件的使用上更灵活,但语法更加笨拙。
Lock
接口支持在语义上不同的锁定规则(可重入、公平等),并且可以在非块结构的上下文中使用,包括递交和锁重排序算法。主要实现是ReentrantLock
。
ReadWriteLock
接口类似地定义了可以被读者共享但对写者排他的锁。只提供了一个实现,ReentrantReadWriteLock
,因为它涵盖了大多数标准使用情境。但程序员可以创建自己的实现以满足非标准需求。
Condition
接口描述了可以与锁关联的条件变量。这些在使用上类似于使用Object.wait
访问的隐式监视器,但提供了扩展功能。特别是,多个Condition
对象可以与单个Lock
关联。为了避免兼容性问题,Condition
方法的名称与相应的Object
版本不同。
AbstractQueuedSynchronizer
类作为定义依赖于排队阻塞线程的锁和其他同步器的有用超类。AbstractQueuedLongSynchronizer
类提供了相同的功能,但扩展了对64位同步状态的支持。两者都扩展了类AbstractOwnableSynchronizer
,这是一个简单的类,用于记录当前持有独占同步的线程。LockSupport
类提供了更低级别的阻塞和解除阻塞支持,对于那些实现自己定制锁类的开发人员很有用。
- 自JDK版本:
- 1.5
-
ClassDescription可以被单个线程独占拥有的同步器。一个同步器,其同步状态以
long
形式维护。提供了一个实现基于先进先出(FIFO)等待队列的阻塞锁和相关同步器(信号量、事件等)的框架。Lock
实现提供了比使用synchronized
方法和语句获得的更广泛的锁定操作。用于创建锁和其他同步类的基本线程阻塞原语。一个ReadWriteLock
维护一对相关的锁
,一个用于只读操作,一个用于写入。一个可重入互斥Lock
,具有与使用synchronized
方法和语句访问的隐式监视器锁相同的基本行为和语义,但具有扩展功能。支持与ReentrantLock
类似语义的ReadWriteLock
的实现。一种基于能力的锁,具有三种模式来控制读/写访问。