使用interrupt()方法来中断线程并使用 isInterrupted() 方法来判断线程是否已中断:
/** * @description **/ public class InterruptTest2 implements Runnable { public static void main(String[] args) { InterruptTest2 test = new InterruptTest2(); Thread t = new Thread(test); t.start(); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("in main() - 中断其他线程"); t.interrupt(); System.out.println("in main() - 离开"); } @Override public void run() { System.out.println(""); try { System.out.println("in run() - 将运行 work2() 方法"); work2(); System.out.println("in run() - 从 work2() 方法回来"); } catch (InterruptedException e) { System.out.println("in run() - 中断 work2() 方法"); return; } System.out.println("in run() - 休眠后执行"); System.out.println("in run() - 正常离开"); } public void work2() throws InterruptedException { 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()); } } } }
in run() - 将运行 work2() 方法 in main() - 中断其他线程 in main() - 离开 C isInterrupted()=true in run() - 中断 work2() 方法