多线程之interrupt
Posted zhc8016
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程之interrupt相关的知识,希望对你有一定的参考价值。
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");
}
这样就可以结束线程的运行。
以上是关于多线程之interrupt的主要内容,如果未能解决你的问题,请参考以下文章
Java多线程系列---“基础篇”09之 interrupt()和线程终止方式
Java——多线程高并发系列之wait()notify()notifyAll()interrupt()