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

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

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

下面举两个例子:

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

package demo1;

public class demo4 extends Thread{

private int x=0;
public void run() {
while (true) {
System.out.println("zhc cool");
for(int i=0;i<9;i++) {
x=(int)(Math.random()*100);
}
}
}
public static void main(String[] args) throws Exception{
Thread s=new demo4();
System.out.println("start");
s.start();
s.sleep(3000);
System.out.println("try to stop");
s.interrupt();
Thread.sleep(3000);

}

}

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

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

。。。。

然后看下面的程序

public class demo4 extends Thread{

public void run() {
try {
sleep(3000);
}
catch(InterruptedException e) {
System.out.println(e.getMessage());
}
}
public static void main(String[] args) throws Exception{
Thread s=new demo4();

s.start();
System.out.println("请输入任意键结束进程");
System.in.read();
s.interrupt();
System.out.println("stop");

}

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

05-11 20:19