Lock
接口支持语义(可重入,公平等)不同的锁定规则,并且可以在非块结构的上下文中使用,包括Lock
和锁定重排算法。 主要实现是ReentrantLock
。
ReadWriteLock
接口类似地定义了可以在读者之间共享但是作者专用的锁。 由于它涵盖了大多数标准的使用情境,因此只提供了一个实现,即ReentrantReadWriteLock
。 但是程序员可以创建自己的实现来覆盖非标准的需求。
Condition
接口描述了可能与锁关联的条件变量。 这些使用类似于使用Object.wait
访问的隐式监视器,但提供了扩展功能。 特别是,多个Condition
对象可能与单个Lock
关联。 为避免兼容性问题, Condition
方法的名称与相应的Object
版本不同。
AbstractQueuedSynchronizer
类用作定义锁和其他同步器的有用超类,这些同步器依赖排队被阻塞的线程。 AbstractQueuedLongSynchronizer
类提供了相同的功能,但支持64位的同步状态。 两者都扩展了类AbstractOwnableSynchronizer
,这是一个简单的类,用于帮助记录当前正在进行独占同步的线程。 LockSupport
类提供较低级别的阻塞和解除阻塞支持,这对于那些实现其自定义锁定类的开发人员非常有用。
Condition | Condition 因素出 Object 监视器方法( wait , notify 和 notifyAll )成不同的对象,以得到具有多个等待集的每个对象,通过将它们与使用任意的组合的效果 Lock 实现。 |
Lock | Lock 实现提供了比使用 synchronized 方法和语句可获得的锁定操作更广泛的锁定操作。 |
ReadWriteLock | A ReadWriteLock 维护一对关联的 locks ,一个用于只读操作,另一个用于写入。 |
AbstractOwnableSynchronizer | 同步器可能由线程专有。 |
AbstractQueuedLongSynchronizer | AbstractQueuedSynchronizer 版本,其中同步状态保持为 long 。 |
AbstractQueuedLongSynchronizer.ConditionObject | Condition实现 AbstractQueuedLongSynchronizer 作为基础 Lock 实施。 |
AbstractQueuedSynchronizer | 为实现依赖于先进先出(FIFO)等待队列的阻塞锁和相关同步器(信号量,事件等)提供框架。 |
AbstractQueuedSynchronizer.ConditionObject | Condition实现 AbstractQueuedSynchronizer 作为基础 Lock 实施。 |
LockSupport | 用于创建锁定和其他同步类的基本线程阻塞原语。 |
ReentrantLock | 可重入的互斥 Lock 具有与使用 synchronized 方法和语句访问的隐式监视器锁相同的基本行为和语义,但具有扩展功能。 |
ReentrantReadWriteLock | 支持 ReadWriteLock 类似语义的实现 ReentrantLock 。 |
ReentrantReadWriteLock.ReadLock | 方法 readLock() 返回的锁定。 |
ReentrantReadWriteLock.WriteLock | 由方法 writeLock() 返回的锁。 |
StampedLock | 基于能力的锁定,具有三种控制读/写访问的模式。 |