ReentrantLock 和 Synchronized 的区别

ReentrantLock 和 Synchronized 的区别

1. ReentrantLock 可以替代 Synchronized。

2. ReentrantLock 的底层是用 CAS 实现的,Synchronized 的底层是一个锁升级的过程:New ---> 偏向锁 --> 轻量级锁(乐观锁、自旋锁、自适应自旋锁)--> 重量级锁。

3. ReentrantLock 中有 tryLock() 方法,如果不能获取锁怎么办?

4. ReentrantLock 中有 lockInterruptibly() 方法,可以被打断。

5. ReentrantLock 中可以指定公平锁,Synchronized 只有非公平锁。

private static ReentrantLock lock = new ReentrantLock(true); // 参数为true表示为公平锁

公平锁和非公平锁的详解:https://www.imooc.com/article/302143

原文地址:https://www.cnblogs.com/xiekun96/p/14245326.html