1. 锁的实现

synchronized 是 JVM 实现的,而 ReentrantLock 是 JDK 实现的。

2. 性能

新版本 Java 对 synchronized 进行了很多优化,例如自旋锁等,synchronized 与 ReentrantLock 大致相同。

3. 等待可中断

当持有锁的线程长期不释放锁的时候,正在等待的线程可以选择放弃等待,改为处理其他事情。

ReentrantLock 可中断,而 synchronized 不行。

4. 公平锁

公平锁是指多个线程在等待同一个锁时,必须按照申请锁的时间顺序来依次获得锁。

synchronized 中的锁是非公平的,ReentrantLock 默认情况下也是非公平的,但是也可以是公平的。

5. 锁绑定多个条件

一个 ReentrantLock 可以同时绑定多个 Condition 对象。

相关文章:

  • 2021-12-05
  • 2021-07-27
  • 2022-01-04
  • 2021-07-12
  • 2021-12-06
  • 2021-05-29
  • 2021-12-18
猜你喜欢
  • 2021-09-25
  • 2021-11-30
  • 2021-12-02
  • 2022-12-23
  • 2021-10-20
  • 2021-05-20
相关资源
相似解决方案