synchronized 与 ReentrantLock 的区别?

66 阅读1分钟

synchronized 与ReentrantLock的区别如下:

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