synchronized 与ReentrantLock的区别如下:
- synchronized 是依赖于 JVM 实现的,ReentrantLock 是JDK 自身实现的;
- synchronized 的使用简单,可以自动释放锁,而 ReentrantLock 需要手动释放锁;
- ReentrantLock 锁的细粒度要比 synchronized 小;
- ReentrantLock 支持公平锁,synchronized 只能是非公平锁,
- ReentrantLock 提供了一个 Condition(条件)类,锁要更灵活