高橋(徹)です。 昨日読書会の宿題事項、デッドロックのデモプログラムを実行すると どれくらいで発生するだろうか? 確認してみました。 ノートPC(CPU:Pentium M, OS:WindowsXP, JDK 6 RC版)でも2,3秒と経たずに デッドロックに陥りました。 (デュアルコアのAthlon 64 X2だと1秒経たずという感じ) デッドロックが起きたか見えるように、transferMoneyメソッドを1回実行する 毎に、. を1つ表示するようにしています。 デッドロック状態になったら、Ctrl-Break(Windowsの場合)か、JDK 6なら jconsoleを実行してスレッドタブを選択し、画面下の[デッドロックを検出する] ボタンを押すと、JVMがデッドロックを検知したことが分かります。 jconsoleはJ2SE 5(Tiger)から含まれるツールですが、Tigerの場合jconsoleで 接続するにはコマンドラインオプションを追加指定するのが面倒でしたが、 JDK 6では指定が不要になったのでとっても楽です。 -- TAKAHASHI,Toru torutk@xxxxxxxxxxxx
Attachment:
deadlockDemo.lzh
Description: Binary data