ReentrantLock可以替代synchronized使用
- cas(CompareAndSet) vs 锁升级
- ReentrantLock 是cas(unsafe操作CPU原语来实现的)
- synchronized主要是一个锁升级的过程(偏向锁->自旋锁->系统锁)
- ReentrantLock 可以使用 trylock
Lock lock = new ReentrantLock(); locked = lock.tryLock(5, TimeUnit.SECONDS);
- ReentrantLock 可以对interrupt()方法做出响应
Lock lock = new ReentrantLock(); lock.lockInterruptibly();
- ReentrantLock 支持公平锁和非公平锁的切换,synchronized只有非公平锁
ReentrantLock lock=new ReentrantLock(true);
网友评论