synchronized 是 JVM 实现的,而 ReentrantLock 是 JDK 实现的。
新版本 Java 对 synchronized 进行了很多优化,例如自旋锁等,synchronized 与 ReentrantLock 大致相同。
当持有锁的线程长期不释放锁的时候,正在等待的线程可以选择放弃等待,改为处理其他事情。
ReentrantLock 可中断,而 synchronized 不行。
公平锁是指多个线程在等待同一个锁时,必须按照申请锁的时间顺序来依次获得锁。
synchronized 中的锁是非公平的,ReentrantLock 默认情况下也是非公平的,但是也可以是公平的。
一个 ReentrantLock 可以同时绑定多个 Condition 对象。
【锁】synchronized 和ReentrantLock
原文:https://www.cnblogs.com/itplay/p/11102776.html