Java 实例 - 中断线程
以下实例演示了如何使用interrupt()方法来中断线程并使用 isInterrupted() 方法来判断线程是否已中断:
Main.java 文件
publicclassMainextendsObjectimplementsRunnable{publicvoidrun(){try{System.out.println("in run() - 将运行 work2() 方法");
work2();
System.out.println("in run() - 从 work2() 方法回来");
}catch(InterruptedExceptionx){System.out.println("in run() - 中断 work2() 方法");
return;
}System.out.println("in run() - 休眠后执行");
System.out.println("in run() - 正常离开");
}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(inti = 0; i < 100000; i++){intj = 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){Mainsi = newMain();
Threadt = newThread(si);
t.start();
try{Thread.sleep(2000);
}catch(InterruptedExceptionx){}System.out.println("in main() - 中断其他线程");
t.interrupt();
System.out.println("in main() - 离开");
}}
以上代码运行输出结果为:
in run() - 将运行 work2() 方法 in main() - 中断其他线程 in main() - 离开 C isInterrupted()=true in run() - 中断 work2() 方法