JavaのReentrantReadWriteLock要求
-
11-09-2019 - |
質問
ただ、簡単な質問は明らかます。
書き込みロックが別によって要求されたときに読み込みロックは、スレッドによって保持されている場合は、はどうなりますか? 書き込みロックのスレッドが解放されるように、すべての現在保持されている読み取りロックを待つ必要がありますか? また、書き込みロックが許可して解放されるまで、すべての新しい読み取りロック要求がブロックされたのですか?
おかげ
解決
Javadocは、この説明します:
<時間>このクラスは、リーダーを課しません またはライターの優先順序 アクセスをロック。しかし、それはサポートしています オプションのの公正の ポリシー。公正ように構成された場合には、 スレッドが使用してエントリを争います およその到着順ポリシー。 書き込みロックが解除された場合 いずれかの単一の最長待機します 作家は、書き込みが割り当てられます ロック、またはがある場合に読者が待っています のいずれかの作家よりも長く、セット 読者は、読み取りが割り当てられます ロック。非公正として構築する場合、 ロックの必要性へのエントリの順序 到着順になりません。いずれにおいても 場合、リーダがアクティブである場合と 作家はいない、ロックに入ります その後の読者が付与されます その作家後まで読み込みロック 取得および書き込みをリリースしました ロックます。
書き込みロックが別によって要求されたときに読み込みロックは、スレッドによって保持されている場合は、はどうなりますか?書き込みロックのスレッドが解放されるように、すべての現在保持されている読み取りロックを待つ必要がありますか?
はい、ライターが待機する必要があります。しかし、それだけで現在開催された読み取りロックを待ちます。後に到着する読者は、作家の後にキューイングされます。
また、書き込みロックが許可して解放されるまで、すべての新しい読み取りロック要求がブロックされたのですか?
はい
他のヒント
ReadWriteLock
は、読み取りロックと同時に開催された書き込みロックを持つことはできません。 、の要求は、読み取りロックがブロックまたは失敗になります開催された書き込みロックを言ってます。