synchronized vs ReentrantLock用于无竞争锁定

时间:2012-07-28 04:59:45

标签: java multithreading

对于完全无竞争的锁定获取,ReentrantLock如何针对synchronized执行?

假设您打算实现一个两个锁类(这意味着您需要2个不同的锁并且只需要像LinkedBlockingQueue中的那个那样),其中put和take锁的获取由thread1和thread2完成(总是),这意味着锁是无竞争的,线程局部性的原理是什么,ReentrantLock如何对同步执行(这需要完全锁定队列)?

1 个答案:

答案 0 :(得分:3)

当3个或更多线程争用时,大多数ReentrantLock会获胜,但这取决于硬件,操作系统,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