Reentrantlock 怎么知道当前获得锁的是哪个线程

2020-04-12 17:47:12 +08:00
 chenguoyu
刚刚面试官问了这个问题,没答上来,百度也没找到。
2470 次点击
所在节点    Java
3 条回复
lhx2008
2020-04-12 17:56:06 +08:00
应该是说说 AQS 的东西
tcxurun
2020-04-12 18:49:32 +08:00
Reentrantlock 主要是基于 AQS,而 AQS 继承一个抽象类 AbstractOwnableSynchronizer,有个变量 exclusiveOwnerThread,用来存储锁持有的线程,然后比较,比如源码中你会看到这个
(current == getExclusiveOwnerThread())
coer
2020-04-12 19:39:40 +08:00
从 lock()进去走几步就能看到 nonfairTryAcquire(int acquires)中的 else if (current == getExclusiveOwnerThread()).....

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/661716

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX