关注
我自己记得笔记,网易面试也考了这道题
Synchronized的底层实现依赖于JVM,
在
HotSpot JVM实现中,锁有个专门的名字:对象监视器。
当多个线程同时请求某个对象监视器时,对象监视器会设置几种状态用来区分请求的线程:
Contention List:一个虚拟的队列,所有请求锁的线程将被首先放置到该竞争队列
Entry List:Contention List中那些有资格成为***的线程被移到Entry List,ContentionList
会被线程并发访问,为了降低对ContentionList队尾的争用
Wait Set:那些调用wait方法被阻塞的线程被放置到Wait Set
OnDeck:任何时刻最多只能有一个线程正在竞争锁,该线程称为OnDeck
Owner:获得锁的线程称为Owner
!Owner:释放锁的线程
具体实现方式是:新请求锁的线程将首先被加入到ConetentionList中,当某个拥有锁的线程(Owner状态)调用unlock之后,如果发现EntryList为空则从ContentionList中移动线程到EntryList,OnDeck线程获得锁后即变为owner线程,无法获得锁则会依然留在EntryList中
查看原帖
点赞 7
相关推荐
查看11道真题和解析 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 春招 / 实习投递,你最焦虑的一件事 #
3742次浏览 53人参与
# HR问:你期望的薪资是多少?如何回答 #
80010次浏览 677人参与
# 神州信息求职进展汇总 #
4637次浏览 74人参与
# 今年找实习到底有多难? #
2305次浏览 31人参与
# 27届求职交流 #
19686次浏览 399人参与
# 哪一刻你对工作祛魅了? #
1405次浏览 21人参与
# 26届求职交流 #
9886次浏览 252人参与
# 工作丧失热情的瞬间 #
366678次浏览 2557人参与
# 快手求职进展汇总 #
737568次浏览 7115人参与
# 双非能在秋招上岸吗? #
378199次浏览 1875人参与
# 国企/银行/研究所公司爆料 #
195120次浏览 900人参与
# 三月的小目标 #
30173次浏览 568人参与
# 听劝,这个公司值得去吗 #
678690次浏览 2000人参与
# 交出你的校招焚诀 #
21560次浏览 327人参与
# 面试___岗的必刷题单 #
24045次浏览 429人参与
# 哪些公司开暑期实习了? #
39444次浏览 315人参与
# 面试中,你被问过哪些奇葩问题? #
89067次浏览 850人参与
# 你觉得mentor喜欢什么样的实习生 #
51775次浏览 1009人参与
# 求职遇到的搞笑事件 #
165268次浏览 902人参与
# 24秋招避雷总结 #
953824次浏览 7052人参与
# 汇川技术求职进展汇总 #
183506次浏览 1060人参与