CS-Notes 学习笔记
Java 后端 · Java 并发

synchronized 和 ReentrantLock 有什么区别?

先自己想一想,再看参考要点

参考要点

  • synchronized 由 JVM 实现,ReentrantLock 由 JDK 基于 AQS 实现,性能大致相同
  • ReentrantLock 支持等待可中断、公平锁和绑定多个 Condition,synchronized 都不支持
  • ReentrantLock 必须在 finally 中 unlock(),synchronized 由 JVM 保证释放
  • 不需要这些功能时优先用 synchronized,但 JDK 21 的虚拟线程在 synchronized 中阻塞会固定载体线程,包住 I/O 的临界区改用 ReentrantLock(JDK 24 起基本不再固定)
在学习站中自测这道题看这道题所在的一天

学习站:先用面试题自评定级,按水平和面试日期排出每天的计划,自评过的题按间隔复习。免费、无需注册,记录只保存在自己的浏览器中。