publicclassGeneralInterruptextendsObjectimplementsRunnable{publicvoidrun(){try{System.out.println("in run() - about to work2()");work2();System.out.println("in run() - back from work2()");}catch(InterruptedException x){System.out.println("in run() - interrupted in work2()");return;}System.out.println("in run() - doing stuff after nap");System.out.println("in run() - leaving normally");}publicvoidwork2()throwsInterruptedException{while(true){if(Thread.currentThread().isInterrupted()){System.out.println("C isInterrupted()="+Thread.currentThread().isInterrupted());Thread.sleep(2000);System.out.println("D isInterrupted()="+Thread.currentThread().isInterrupted());}}}publicvoidwork()throwsInterruptedException{while(true){for(int i =0; i <100000; i++){int j = i *2;}System.out.println("A isInterrupted()="+Thread.currentThread().isInterrupted());if(Thread.interrupted()){System.out.println("B isInterrupted()="+Thread.currentThread().isInterrupted());thrownewInterruptedException();}}}publicstaticvoidmain(String[] args){GeneralInterrupt si =newGeneralInterrupt();Thread t =newThread(si);
t.start();try{Thread.sleep(2000);}catch(InterruptedException x){}System.out.println("in main() - interrupting other thread");
t.interrupt();System.out.println("in main() - leaving");}}
结果
上面的代码示例将产生以下结果。
in run()- about towork2()
in main()- interrupting other thread
in main()- leaving
CisInterrupted()=true
in run()- interrupted in work2()