reentrantReadWriteLock を適用し、それがロックされている場合、別のスレッドが既に別のブロックを実行している間に別のスレッドが Lock にアクセスするとどうなりますか? (したがって、.unlock に到達する前に)
メソッドはキャンセルされますか?それとも止まっているのでしょうか?:O
reentrantReadWriteLock を適用し、それがロックされている場合、別のスレッドが既に別のブロックを実行している間に別のスレッドが Lock にアクセスするとどうなりますか? (したがって、.unlock に到達する前に)
メソッドはキャンセルされますか?それとも止まっているのでしょうか?:O
ReentrantReadWriteLock と言ったので、動作は、ReadWriteLock に関連付けられた読み取りロックまたは書き込みロックのどちらを取るかによって異なります。
読み取りロックは、ライターがない限り、複数のスレッドが同時に保持できます。
ロックが使用可能になるまで、スレッドはブロックされます。(ドキュメント)
利用可能な場合にのみロックを取得したい場合は、tryLock()を使用できます。
スレッドはブロックされます。複数のスレッドがこのロックを取得しようとすると、それらすべてがブロックされます。ロックが解放されると、待機中のプールから 1 つのスレッドだけがロックを取得し、残りは引き続き待機します。公平なロックと不公平なロックの違いをご覧ください。
ブロックしたくない場合は、Lock.tryLock()
(待機せずに試行する)またはtryLock(long time, TimeUnit unit)
指定した時間だけ待機するを使用できます。