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