关注
我自己记得笔记,网易面试也考了这道题
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
相关推荐
06-25 17:47
哈尔滨工业大学 光传输工程师 
点赞 评论 收藏
分享
点赞 评论 收藏
分享
05-06 02:27
武汉工程大学 营销 点赞 评论 收藏
分享
05-03 16:29
西京学院 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 实习,不懂就问 #
7075次浏览 100人参与
# 如果中了500万,你会离职吗? #
84881次浏览 657人参与
# 现代汽车前瞻技术研发急速编程挑战赛 #
15660次浏览 146人参与
# 你觉得实习能学到东西吗 #
3570次浏览 74人参与
# 如何准备秋招 #
2131次浏览 29人参与
# 26届校招投递进展 #
33257次浏览 250人参与
# 你觉得专业和学校哪个对薪资影响最大 #
61482次浏览 491人参与
# 打工人的精神状态 #
50159次浏览 868人参与
# 秋招什么时候开投比较合适? #
1294次浏览 32人参与
# 你今年的保底offer是哪家 #
118656次浏览 538人参与
# 预测一下26届秋招形势 #
5741次浏览 64人参与
# 校招第一份工作你干了多久? #
86489次浏览 400人参与
# 烟草笔面经互助 #
17027次浏览 180人参与
# 来聊聊你目前的求职进展 #
634556次浏览 6747人参与
# 央国企投递记录 #
88373次浏览 1363人参与
# 机械人晒出你的简历 #
78163次浏览 663人参与
# 每个月的工资都是怎么分配的? #
3331次浏览 60人参与
# 机械实习一天多少钱合适? #
27676次浏览 167人参与
# 外包能不能当跳板? #
34669次浏览 221人参与
# 高考出分的那一天,我__ #
5353次浏览 84人参与
# 听到哪句话就代表面试稳了or挂了? #
170965次浏览 1370人参与