私は、公正な値が true の ReadWriteLock インスタンスを作成したマルチスレッド プログラムを持っています。このアプリケーションは応答を停止しました。
以下は、スレッド ダンプに基づく調査結果です。1 つのスレッドが読み取りロックを取得し、実行中の DB 操作でブロックされました。長い間ロックを解除しませんでした。
上記のスレッド以外に、あと 3 つのスレッドがあります。1 つのスレッドが書き込みロックの取得を待機しています。一方、他の 2 つのスレッドが読み取りロックの取得を待機しています。
質問は、なぜ 2 つのスレッドが読み取りロックを待機しているのかということです。Fair Value が true であり、書き込みロックを要求しているスレッドが読み取りロックを要求している 2 つのスレッドよりも先に来たために発生しているのでしょうか? 書き込みを要求するスレッドが先に来た場合、システムは読み取りロックを要求するスレッドをブロックしますか?