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

非公平锁
释放锁

==图示两种锁策略==
