3

ReentrantLock 如何针对单独的非竞争锁获取同步执行?

假设您打算实现一个两个锁类(这意味着您需要 2 个不同的锁并且同步是不够的,就像在 LinkedBlockingQueue 中的那样),其中获取 put 和 take 锁是由说 thread1 和 thread 2(总是)完成的,这意味着锁是无争用的并且线程局部性原则出现了,ReentrantLock 如何针对同步执行(这将需要完全锁定队列)?

4

1 回答 1

3

大多数情况下 ReentrantLock 在 3 个或更多线程竞争时获胜,但这取决于硬件、操作系统、JVM 版本及其选项。

Martin Thompson 在他的博客中发表了关于 ReentrantLock 与同步块和偏向锁定的发现:

http://mechanical-sympathy.blogspot.com/2011/11/java-lock-implementations.html

http://mechanical-sympathy.blogspot.com/2011/11/biased-locking-osr-and-benchmarking-fun.html

于 2012-07-28T06:02:24.153 回答