2017-11-24 8 views
3

この質問は理論的なものですが、申し訳ありませんが、今回は避けられません。 私は約ReentrantLockread thisを学んでいる:ReentrantLockフェアネスパラメータ

注しかし、ロックの公平性がスレッドのスケジューリングの公平性を保証するものではありません。

これはどういう意味ですか?どのように私はこれを想像することができますか?

はのは、ロックが今誰もが保持されていないと仮定してみましょう:

  1. スレッドスケジューラは、(最長待機中のスレッドではありません)t1スレッドロック
  2. を取得する
  3. t1試みを目覚めますロックを拒否するt1t1が最長待機スレッドではないため、
  4. t1
  5. スレッドスケジューラがスレッドを起動します

Javaはこのように動作しますか?非常に不成功なケースでは、これは文脈の切り替えが多いことを意味します(これは、スループットが低くなり、ドキュメントに書かれています)。

+0

ドクは、フェアネス・ロックが飢餓の欠如を保証することを言いますが、他のスレッドがprogression.Meansない間、多くのスレッドの1が連続してロック複数の時間を得ることができるそれが最近 –

答えて

4

これはどういう意味ですか?

OSは、スレッドが好きなときに実行するようにスケジュールします。

これはどう思いますか?

OSには、JVMが次に実行したいものはほとんどありません。

Javaはこのように動作しますか?

はい、JavaはOSスケジューラを制御しません。

+0

クリスプ同じロックを解放していたスレッドによって再びロックを取得避けていませんポイントブランク –

関連する問題