关注
我自己记得笔记,网易面试也考了这道题
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
相关推荐
破双非转码er:广工上电视了
点赞 评论 收藏
分享
12-06 22:12
武汉大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# offer帮选 #
4799546次浏览 29149人参与
# 实习,不懂就问 #
134255次浏览 1243人参与
# 百融云创求职进展汇总 #
347次浏览 0人参与
# 校招薪资来揭秘 #
342642次浏览 1889人参与
# 实习要如何选择和准备? #
125668次浏览 1476人参与
# OC/开奖 #
279941次浏览 1744人参与
# 2025年终总结 #
17913次浏览 267人参与
# 国企和大厂硬件兄弟怎么选? #
138423次浏览 1671人参与
# 硬件兄弟们 甩出你的华为奖状 #
117750次浏览 701人参与
# 移动求职进展汇总 #
15687次浏览 125人参与
# 第一份工作能做外包吗? #
87904次浏览 586人参与
# 毕业租房也有小确幸 #
148257次浏览 4525人参与
# uu们,春招你还来吗? #
16428次浏览 111人参与
# 记录实习开销 #
169482次浏览 661人参与
# 为了去实习,我赌上了___ #
24004次浏览 218人参与
# 秋招暂停,我将对以下公司做出处罚__ #
43064次浏览 177人参与
# 生物制药的同学已经投递多少份简历了 #
14657次浏览 52人参与
# 面试紧张时你会有什么表现? #
16407次浏览 135人参与
# 高薪高压 vs 低薪wlb,你怎么选? #
14728次浏览 159人参与
# 软开人,秋招你打算投哪些公司呢 #
168552次浏览 1282人参与
# Offer比较,你最看重什么? #
241537次浏览 1487人参与
