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 | 基于能力的锁定,具有三种控制读/写访问的模式。 |