3

ReentrantLock は、完全に競合しないロックの取得に対して、synchronized に対してどのように機能しますか?

2 つのロック クラス (つまり、LinkedBlockingQueue のように 2 つの異なるロックが必要で、同期されたものでは十分ではないことを意味します) を実装するつもりであるとします。プットとテイク ロックの取得は、スレッド 1 とスレッド 2 (常に) によって行われます。ロックが競合していないことを意味し、スレッドの局所性の原則が適用されます。 ReentrantLock は、同期に対してどのように実行されますか (キューの完全なロックが必要になります) ?

4

1 に答える 1

3

ほとんどの場合、ReentrantLockは、3つ以上のスレッドが競合する場合に勝ちますが、ハードウェア、OS、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 に答える