【问题标题】:synchronized vs ReentrantLock for uncontended locks用于非竞争锁的同步与 ReentrantLock
【发布时间】:2012-07-28 04:59:45
【问题描述】:

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

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

【问题讨论】:

标签: java multithreading


【解决方案1】:

大多数情况下,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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-17
    • 2019-04-22
    • 1970-01-01
    相关资源
    最近更新 更多