Lock和ReentrantLock
Lock
特征:
- 提供无条件的、可轮询的、定时的、可中断的锁获取操作
- 显式的加锁、解锁
实现类:
- ReentrantLock
- ReentrantReadWriteLock.ReadLock
- ReentrantReadWriteLock.WriteLock
API:
1 | public abstract interface Lock{ |
Lock与synchronized比较
Lock | synchronized |
---|---|
使用灵活 | 使用简单 |
必须手动加锁、解锁 | 关键字搞定 |
锁代码块 | 锁是对象(this…) |
ReentrantLock
Lock的实现类,是一个互斥的同步器。竞争条件下,比synchronized实现具有更好的伸缩性。
公平锁
获取锁时判断,是否有前置节点在等待中,有则休眠,等待
非公平锁
释放锁
==图示两种锁策略==