どの割り込みスレッドへ
使用現在の方法
、()を呼び出し割り込みスレッドが中断されなければならない通知
スレッドの状態がブロックされている場合1)、スレッドは直ちにブロックされた状態を終了し、異常InterruptExceptionをスローします
スレッドが正常状態である場合2)、次いでスレッドは、フラグがtrueに設定されている中断されます。割り込みフラグは、スレッドが影響を受けずに実行していきます設定されています
次のコード
パブリッククラスInterruptDemo { 公共の静的な無効メイン(文字列[]引数)はInterruptedExceptionある{スロー RunnableをinterruptTask =新規のRunnableを(){ int型I = 0。 @Override ます。public void実行(){ 試み{ しばらく{()にThread.currentThread(isInterruptedを()!。) のThread.sleep(100); I ++; System.out.println(にThread.currentThread()のgetName()+ "(" +にThread.currentThread()getStateを()+ ")ループ" + I。); } }キャッチ(InterruptedExceptionある電子){ System.out.println(にThread.currentThread()のgetName()+ "(" +にThread.currentThread()getStateを()+ ")キャッチInterruptedExceptionあります"。。); //e.printStackTrace()。 } } }。 スレッドT1 =新しいスレッド(interruptTask、 "T1")。 System.out.println(t1.getName()+ "(" + t1.getState()+ ")新しいです"); t1.start(); System.out.println(t1.getName()+ "(" + t1.getState()+ ")が開始されました"); Thread.sleep(300)。 t1.interrupt(); System.out.println(t1.getName()+ "(" + t1.getState()+ ")中断されました")。 System.out.println(t1.getName()+ "(" + t1.getState()+ ")が今中断されました"); } }
次のように印刷結果は以下のとおりです。
T1(NEW)新しいである T1(RUNNABLE)が開始される 時刻t1(RUNNABLE)ループ1つの T1(RUNNABLE)ループ2 T1(RUNNABLE)ループ3 T1(RUNNABLE)が中断された T1(TERMINATED)について中断され
割り込み呼び出したときに、スレッドが(SLEEPを実行している
Thread.sleep(
100
);
)、例外がスローされます。