概念
(1)Lock和ReadWriteLock是两大锁的根接口,Lock代表实现类是ReentrantLock(可重入锁),ReadWriteLock(读写锁)的代表实现类是ReentrantReadWriteLock。
Lock 接口支持那些语义不同(重入、公平等)的锁规则,可以在非阻塞式结构的上下文(包括 hand-over-hand 和锁重排算法)中使用这些规则。主要的实现是 ReentrantLock。
ReadWriteLock 接口以类似方式定义了一些读取者可以共享而写入者独占的锁。此包只提供了一个实现,即 ReentrantReadWriteLock,因为它适用于大部分的标准用法上下文。但程序员可以创建自己的、适用于非标准要求的实现。
(2)Condition 接口描述了可能会与锁有关联的条件变量。这些变量在用法上与使用 Object.wait 访问的隐式监视器类似,但提供了更强大的功能。需要特别指出的是,单个 Lock 可能与多个 Condition 对象关联。为了避免兼容性问题,Condition 方法的名称与对应的 Object 版本中的不同。

Lock接口
// 执行此方法时, 如果锁处于空闲状态, 当前线程将获取到锁. 相反, 如果锁已经
被其他线程持有, 将禁用当前线程, 直到当前线程获取到锁.
void lock()
// 如果当前线程未被中断,则获取锁,可以响应中断
void lockInterruptibly()
// 条件对象,获取等待通知组件。该组件和当前的锁绑定,
当前线程只有获取了锁,才能调用该组件的 await()方法,而调用后,当前线程将缩放锁。
Condition newCondi
Java多线程安全:Lock与ReadWriteLock详解

本文介绍了Java中的Lock接口及其主要实现ReentrantLock,详细讲解了公平锁与非公平锁的区别,以及ReentrantLock与synchronized的对比。此外,还探讨了ReadWriteLock接口和其具体实现ReentrantReadWriteLock,强调了读写锁在提高并发性能上的作用。最后,通过实例分析了Lock的不同锁获取方法和Condition的使用。
最低0.47元/天 解锁文章
301

被折叠的 条评论
为什么被折叠?



