内容:
- 中断されたスレッドの概念
- 中断方法
- 概要
コンセプトは、スレッドに割り込ん:
割り込みスレッドがある協力メカニズム本当に中断しますが、中断したスレッドに気づかないようにその実行スレッド、。
あなたは友人を追加する妹を持って、その後、システムは、あなた自身のことをφ(>ω<*)に依存して追加するかどうかなしで、あなたにメッセージを送ったように。
中断方法:
図1は、パブリック静的ブール)(。
スレッド決定に割り込み状態かどうかを割り込みステータス・-true、無停止状態-false; スレッドが中断された場合は、IDによってクリアされます。
1 パブリック クラスInterruptTest { 2 公共 静的 ボイドメイン(文字列[]引数){ 3。 // スレッドが中断されたかどうか 4。 のSystem.out.println( "1:" + Thread.interrupted()); 5。 // 配置されたスレッドは、割り込み 6 Thread.currentThread()は;.)(割り込み 7 // スレッドが中断された場合 8 :のSystem.out.printlnを(+ "2" ; Thread.interrupted()) 9 // スレッドが中断された場合に 10 のSystem.out.println( "3:" + Thread.interrupted()); 11 } 12です }
結果:
1:偽
2:真
3:偽
コードの行4、結果が偽スレッドが実行され、現在のコード行6、メインスレッド割り込み、ライン8の結果はtrue、結果が偽であるように、割り込みフラグをクリアするために直ちに中断()メソッドは、ライン10 。
2、公共ブールisInterruptedを() 。
スレッドは、決定で、割り込み状態かどうかを割り込みステータス・-true、無停止状態-false
1 パブリック クラスIsInterruptedTest { 2 公共 静的 ボイドメイン(文字列[]引数){ 3。 // 現在のスレッド 4。 スレッドのスレッド= にThread.currentThread(); 5。 // 現在のスレッドが中断されるかどうか 6。 のSystem.out.println(」1:。 "+ thread.isInterrupted()); 7。 // 設定スレッド割り込み識別 8。 Thread.interrupt(); 9は // 中断スレッドかどうかを決定する 10 のSystem.out.println(" 2:「+ thread.isInterrupted())。 11は // スレッドが割り込まれているかどうかを判断する 12を System.out.println( "3:" + thread.isInterrupted()); 13 試み{ 14 // 线程休眠 15 のThread.sleep(2000 ); 16 のSystem.out.println( "中断されません..." ); 17 } キャッチ(例外e){ 18 のSystem.out.printlnは( "のThread.sleepが中断しました..." )。 19 // 判断线程是否被中断 20 のSystem.out.println( "4:" + thread.isInterrupted())。 21 } 22 のSystem.out.println( "5" + thread.isInterrupted())。 } 24 }
結果:
1:偽
2:真
3:真
のThread.sleepが...中断
偽:4
5:偽
第12行と同じように中断、しかし割り込みフラグをクリアしないであろう、スレッドが中断されているので、これ第二の行15の実装はのThread.sleepはInterruptedExceptionある(2000)例外をスローします。ので、結果が真、真、偽ましたそのため、印刷のThread.sleepは...中断し、結果が偽18、22のラインであるので、明確な割り込みステータスを実行した後。
3、公共ボイド割り込み() ;
スレッド割り込み、および割り込みフラグがtrueに設定されています。
要約:
1、割り込み()メソッドがあるだけすることができる状態がtrueに設定されている割り込み処理。
2、中断()メソッドは次のようになります現在のスレッドの割り込み状態が明確。