听说synchronized锁在 JDK 1.6 之后做了很多的优化,有哪些优化呢?

提问者:帅平 问题分类:面试刷题
听说synchronized锁在 JDK 1.6 之后做了很多的优化,有哪些优化呢?
1 个回答
回忆多美好
回忆多美好
在JDK 1.6之前是重量级锁,线程进入同步代码块/方法时,monitor对象就会把当前进入线程的Id进行存储,设置Mark Word的monitor对象地址,并把阻塞的线程存储到monitor的等待线程队列中,它加锁是依赖底层操作系统的 mutex 相关指令实现,所以会有用户态和内核态之间的切换,性能损耗十分明显,而JDK1.6 以后引入偏向锁和轻量级锁在JVM层面实现加锁的逻辑,不依赖底层操作系统,就没有切换的消耗,所以,Mark Word对锁的状态记录一共有4种:无锁、偏向锁、轻量级锁和重量级锁。
发布于:1年前 (2023-03-16) IP属地:四川省
我来回答