ReentrantReadWriteLock

javaでsynchronizedよりロックの競合を少なくさせる方法

synchronizedを利用して読込み書込み時にロックを行うと、読込みスレッドと読込みスレッドが衝突した時に待ちが発生していましたが

ReentrantReadWriteLockは待ちが発生しません。あくまで読込みスレッドと書込みスレッドが衝突した時にだけ待ちが発生します。(書込みスレッドと書込みスレッドの衝突時でも待ちが発生します。)

サンプル

ReadLockとwriteLockを使った簡単なサンプルを作りました。

実行結果

[ReadLock] start
[ReadLock] start
[ReadLock] end
[ReadLock] end
[WriteLock] start
[WriteLock] end
[ReadLock] start
[ReadLock] end

以上

comments powered by Disqus