控制线程中断的方法一般常规是定义一个布尔值,然后while(布尔值) 去执行,当想停止该线程时候,把布尔值设为false.
这里我们来看第二种,Interrupt
该例子模拟一个线程从1打印到10,然后到5的时候中断线程,主要在线程中捕捉
InterruptedException 异常
public class Test implements Runnable { @Override public void run() { // TODO Auto-generated method stubfor(int i=0;i<10;i++){ System.out.println("打印"+i); try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { // TODO Auto-generated catch block System.out.println("线程interrupterd"); } } } }
在Main方法中进行中断
public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Test tt = new Test(); Thread thread = new Thread(tt); thread.start(); try { TimeUnit.SECONDS.sleep(5); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } thread.interrupt(); } }
打印结果
打印0
打印1
打印2
打印3
打印4
线程interrupterd
打印5
打印6
打印7
打印8
打印9