因为synchronized使用的对象监视器底层使用的是系统原语来实现的锁,线程挂起恢复的时候,会涉及内核态和用户态的转换,性能比较差。jdk1.6对synchronized做了不少优化,所谓的优化就是在内部减少synchronized的使用,因为有些情况下synchronized是可以避免的。
上面只是介绍了jdk的出发点,具体的优化步骤和逻辑,有几篇博客讲的不错,这里先mark一下,有空再来整理:
java 中的锁 – 偏向锁、轻量级锁、自旋锁、重量级锁
因为synchronized使用的对象监视器底层使用的是系统原语来实现的锁,线程挂起恢复的时候,会涉及内核态和用户态的转换,性能比较差。jdk1.6对synchronized做了不少优化,所谓的优化就是在内部减少synchronized的使用,因为有些情况下synchronized是可以避免的。
上面只是介绍了jdk的出发点,具体的优化步骤和逻辑,有几篇博客讲的不错,这里先mark一下,有空再来整理:
java 中的锁 – 偏向锁、轻量级锁、自旋锁、重量级锁