【锁】synchronized 和ReentrantLock

1. 锁的实现

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

2. 性能

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

3. 等待可中断

当持有锁的线程长期不释放锁的时候,正在等待的线程能够选择放弃等待,改成处理其余事情。线程

ReentrantLock 可中断,而 synchronized 不行。对象

4. 公平锁

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

synchronized 中的锁是非公平的,ReentrantLock 默认状况下也是非公平的,可是也能够是公平的。io

5. 锁绑定多个条件

一个 ReentrantLock 能够同时绑定多个 Condition 对象。di

相关文章
相关标签/搜索