关于内核态:synchronized和ReentrantLock

关于内核态:synchronized和ReentrantLock

对比:

特性 synchronized ReentrantLock
默认状态 偏向锁(用户态) CAS(用户态)
低竞争 轻量级锁(用户态) 自旋(用户态)
高竞争 重量级锁(内核态) park/unpark(可能涉及内核)
锁管理 JVM 自动管理 手动控制
灵活性 有限 丰富

关键结论:

  1. synchronized 在无竞争或低竞争时是纯用户态的
  2. ReentrantLock 在获取锁时是用户态的,但 park() 可能涉及内核
  3. ❌ 不能说 synchronized 一定需要内核态切换
  4. ❌ 不能说 ReentrantLock 完全不需要内核态支持

现代 synchronized 经过大量优化,在大多数场景下性能与 ReentrantLock 相当甚至更好! 选择哪个应该基于功能需求而非性能偏见。

posted @ 2025-10-17 15:27  deyang  阅读(5)  评论(0)    收藏  举报