关注
我自己记得笔记,网易面试也考了这道题
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
相关推荐
01-07 17:13
广州大学 前端工程师 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 在大厂上班是一种什么样的体验 #
11988次浏览 152人参与
# 你的mentor是什么样的人? #
51068次浏览 720人参与
# 程序员找工作至少要刷多少题? #
20685次浏览 261人参与
# 我和mentor的爱恨情仇 #
106213次浏览 947人参与
# 论秋招对个人心气的改变 #
12887次浏览 177人参与
# 秋招落幕,你是He or Be #
54162次浏览 618人参与
# 机械人避雷的岗位/公司 #
44012次浏览 304人参与
# 校招第一份工作你干了多久? #
136614次浏览 597人参与
# 为了减少AI幻觉,你注入过哪些设定? #
5776次浏览 173人参与
# 设计人如何选offer #
189662次浏览 868人参与
# 你的秋招进行到哪一步了 #
2530569次浏览 23253人参与
# 机械人还在等华为开奖吗? #
312088次浏览 1582人参与
# 牛客AI体验站 #
7560次浏览 200人参与
# 秋招投递记录 #
380867次浏览 3203人参与
# 重来一次,我还会选择这个专业吗 #
411205次浏览 3898人参与
# 12306一秒售罄,你抢到回家的票了吗? #
2269次浏览 51人参与
# 职场上哪些行为很加分? #
322464次浏览 3600人参与
# 我现在比当时_,你想录用我吗 #
9280次浏览 124人参与
# 互联网公司评价 #
485850次浏览 4111人参与
# 一张图晒一下你的AI员工 #
5638次浏览 126人参与

