Javaのマルチスレッドロック解除問題

Javaのマルチスレッド動作環境、オブジェクトのロックが解除され、どのような状況の下でされる原因になりますか?

:スレッドが唯一のロックを取得した後、ロックを待っているので、操作を再開するので、ロックはもはや必要では非常に重要であるとき、速やかにロックを解除しないロックを保持しているスレッドをできるように。以下の例では、ロックを保持しているスレッドがロックを解除する:
(1)synchronizedブロックの実装を完了し、それがロックを解除します。(同期)
(2)同期コード・ブロックの実行中に、スレッドをもたらすことは、例外が発生した終了、ロックが解放されます。(例外)
同期コード・ブロックの実行中(3)は、ロックを行うことオブジェクト待ち()メソッドに属し、このスレッドは、入力し、ロックを解除する
        待機プールオブジェクトに。(待機)

上記に加えて、限り、ロックを保持しているスレッドは、同期コード・ブロックを終了しないように実行され、それはロックを解除しないであろう。
次の場合には、ロックのスレッドが解放されない:
のThread.sleep()に実行される同期コードブロック(1)の実行中に、現在のスレッドは、CPU、睡眠開始を得たスリープ状態ではなく遮断入りますロックを解除します。
(2)同期コード・ブロックの実行中に、CPUを放棄するThread.yield()メソッドは、現在のスレッドを実行し、準備完了状態に戻るが、ロックを解除しないであろう。

おすすめ

転載: www.cnblogs.com/fyscn/p/11364065.html