关注
我自己记得笔记,网易面试也考了这道题
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
相关推荐
牛客热帖
更多
正在热议
更多
# 这个offer值得去吗? #
30475次浏览 217人参与
# 24秋招避雷总结 #
1019665次浏览 7098人参与
# 在爱玛,骑向未来 #
19960次浏览 392人参与
# 如果春招能重来,我会___ #
28801次浏览 281人参与
# 机械人还在等华为开奖吗? #
339079次浏览 1652人参与
# 你会因为行情,降低找工作标准吗? #
44193次浏览 320人参与
# 联宝杯大学生创新大赛,你的技术值得产业级答案 #
50458次浏览 781人参与
# 校招薪资来揭秘 #
960189次浏览 4061人参与
# 华为池子有多大 #
177859次浏览 930人参与
# 26届春招投递记录 #
8543次浏览 71人参与
# 通信/硬件求职避坑tips #
171914次浏览 1170人参与
# 25届网易互娱暑实进度 #
109020次浏览 802人参与
# 机械人,你的秋招第一份简历被谁挂了 #
268683次浏览 2450人参与
# 远程面试的尴尬瞬间 #
363717次浏览 2062人参与
# 记录我的毕业季 #
4284次浏览 115人参与
# 大学最后一个寒假,我想…… #
103227次浏览 846人参与
# 机械求职避坑tips #
103608次浏览 589人参与
# 你认为小厂实习有用吗? #
144973次浏览 762人参与
# 网易求职进展汇总 #
213067次浏览 1523人参与
# 刚入职就____,这样正常吗? #
148826次浏览 709人参与
# 美团秋招笔试 #
216182次浏览 1191人参与
# 选择和努力,哪个更重要? #
211723次浏览 1566人参与
