どの割り込みスレッドへ

どの割り込みスレッドへ

使用現在の方法

、()を呼び出し割り込みスレッドが中断されなければならない通知

スレッドの状態がブロックされている場合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);)、例外がスローされます。

おすすめ

転載: www.cnblogs.com/linlf03/p/12115445.html