1.interrupt()作为中断程序,并不会直接终止运行,而是设置中断状态,由线程自己处理中断。可以选择终止线程。等待新任务或继续执行。

2.interrupt()经常用于中断处于堵塞状态的的线程,如sleep,wait,join 。

3.当线程检查出有中断状态设置 时,sleep,wait,join 将会抛出异常清除中断状态。

下面举两个例子:

直接调用interrupt(),但没有中断线程:

 1 package demo1;
 2 
 3 public class demo4 extends Thread{
 4 
 5 private int x=0;
 6 public void run() {
 7 while (true) {
 8 System.out.println("zhc cool");
 9 for(int i=0;i<9;i++) {
10 x=(int)(Math.random()*100);
11 }
12 }
13 }
14 public static void main(String[] args) throws Exception{
15 Thread s=new demo4();
16 System.out.println("start");
17 s.start();
18 s.sleep(3000);
19 System.out.println("try to stop");
20 s.interrupt();
21 Thread.sleep(3000);
22 
23 }
24 
25 }

 

这个程序的结果是无法终止线程的运行,结果如下:

start

zhc cool

zhc cool

zhc cool

zhc cool

zhc cool

zhc cool

zhc cool

zhc cool

zhc cool

try to stop

zhc cool

zhc cool

。。。。

然后看下面的程序

 

 1 public class demo4 extends Thread{
 2 
 3 
 4 public void run() {
 5 try {
 6 sleep(3000);
 7 }
 8 catch(InterruptedException e) {
 9 System.out.println(e.getMessage());
10 }
11 }
12 public static void main(String[] args) throws Exception{
13 Thread s=new demo4();
14 
15 s.start();
16 System.out.println("请输入任意键结束进程");
17 System.in.read();
18 s.interrupt();
19 System.out.println("stop");
20 
21 }

 

这样就可以结束线程的运行。