Next: 16.8 優先順位
Up: 16 スレッドのスケジューリング
Previous: 16.6 スレッドの終了待ち joinメソッド
スレッドがブロックされた状態に入る理由には以下の5つがある.
- sleep(milliseconds)によってスレッドをスリープさせた場合.引数で指定さ
れた時間だけスレッドは実行されない.
- suspend()によってスレッドの実行を一時休止させた場合.このメソッド
はresume()メッセージを受け取るまでは実行可能とならない.
Java2では,suspendもresumeも推奨されないメソッドとなっています.
- wait()によってスレッドの実行を一時休止させた場合.このスレッドは
notify(), notifyAll()メッセージを受けるまでは実行可能とならない.
waitは,それが呼ばれて一旦休止する際にロックを解除するところが,
sleep, suspendとは違うところです.これにより,wait()が実行されて
いる間に,他のsynchronizedメソッドを呼び出すことができることになり
ます.
- I/O(入出力)が完了するのを待つ場合.
- synchronizedメソッドを呼び出そうとしたがそのオブジェクトがロックさ
れていて使えない場合.
generated through LaTeX2HTML. M.Inaba 平成18年5月7日