关注
一。Synchronized的底层实现原理
比如我们使用Synchronized修饰代码块,使用javap -c test.class进行反编译,会发现有mintorenter和monitorexit,当程序进入同步代码块中,获取到同步锁,线程会执行minitorenter指令获取minitor所有权,然后将进入数设置为1,如果是重新进入,进入数加一。当获取minitorexit指令时,进入数减一,当进入数为0时,退出minitor。反编译文件中有两个minitorexit指令,原因就是如果进入minitor后发生异常,导致锁没有释放,就会发生死锁,最后一个minitorexit就是为了防止发生死锁从而导致线程不会释放锁。
当Synchronized修饰方法时,通过反编译查看class文件会发现,没有minitorenter和minitorexit这两个指令,常量池中多了一个ACC_SYNCHRONIZED,表示线程进入方法后首先应该获取minitorenter,退出要获取minitorexit指令,不过是两种表现方式,意义都是一样的。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
转发
点赞 评论 收藏
转发
03-25 10:30
中国人民解放军陆军炮兵防空兵学院 计算机类 点赞 评论 收藏
转发
03-30 23:29
门头沟学院 电子信息类 点赞 评论 收藏
转发
牛客热帖
正在热议
# 牛友的五一计划 #
21814次浏览 419人参与
# 晒一晒我的offer #
2842688次浏览 50062人参与
# 牛客帮帮团来啦!有问必答 #
407037次浏览 7893人参与
# 市场营销面经 #
1359次浏览 71人参与
# 如何看待offer收割机的行为 #
195665次浏览 3001人参与
# 非技术岗薪资爆料 #
9593次浏览 200人参与
# 正在春招的你,也参与了去年秋招吗? #
123794次浏览 1627人参与
# 产品实习,你更倾向大公司or小公司 #
31419次浏览 492人参与
# 在国企工作的人,躺平了吗? #
73435次浏览 892人参与
# 第一次面试 #
18756次浏览 291人参与
# 国企和大厂硬件兄弟怎么选? #
28124次浏览 537人参与
# 2022届毕业生现状 #
285987次浏览 4103人参与
# 硬件人的春招flag #
14622次浏览 199人参与
# 浅聊一下我实习的辛苦费 #
71184次浏览 644人参与
# 华为求职进展汇总 #
444242次浏览 4451人参与
# 你更愿意参加线上面试还是线下面试? #
7193次浏览 101人参与
# 女生做医疗销售有前景吗 #
3941次浏览 50人参与
# 提前批真的不会影响正式批吗 #
17991次浏览 224人参与
# 简历中的项目经历要怎么写 #
382415次浏览 6410人参与
# 来聊聊机械薪资天花板是哪家 #
23516次浏览 182人参与