对于一个单独的非争用锁获取,ReentrantLock对synchronized的性能如何?
假设你打算实现一个两个锁的类(这意味着你需要两个不同的锁,而synchronized是不够的,就像在LinkedBlockingQueue中一样),其中put和take锁的获取是由thread1和Thread2 (always)完成的,这意味着锁是无争用的,线程局部性的原则出现了,ReentrantLock对synchronized的性能如何(这将需要队列的完全锁定)?
发布于 2012-07-28 14:02:24
大多数情况下,当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
https://stackoverflow.com/questions/11698418
复制相似问题