synchronized 关键字就略微复杂了,也需要你回答不同版本下的实现原理(1.6与1.6 之后)1.6 之前采用重量级锁的方式,实际是利用操作系统的 mutex lock 指令,在对应代码块出入口位置添加monitor enter 和 monitor exit 来进行加锁解锁,而修饰方法时添加 ACC_synchronized 标志表明当前方法为同步方法。然后就说这个重量级锁可能引起的性能上面的问题,频繁的切换用户态和内核态会引起性能下降。所以 1.6 之后做了锁升级的优化。然后再介绍一下说一下锁的四种状态-无锁、偏向锁、轻量级锁、重量级锁,锁升级的流程。这个问题基本你就拿下了。
1 2

相关推荐

点赞 评论 收藏
转发
牛客网
牛客企业服务