interrupt() 方法 中断线程
* interrupt()方法的简单理解
- interrupt() 方法只是改变线程的阻塞状态而已,让一个正在阻塞状态的线程,恢复执行。但是它不会中断一个正在运行的线程。
- 这一方法实际完成的是,给受阻塞的线程发出一个中断阻塞信号,这样受阻线程就得以退出阻塞的状态。
- 更确切的说,如果线程被Object.wait, Thread.join 和 Thread.sleep 三种方法之一阻塞,此时调用该线程的interrupt()方法,那么该线程将抛出一个 InterruptedException中断异常(该线程必须事先预备好处理此
异常),从而提早终结被阻塞状态。
- 如果线程没有被阻塞,这时调用 interrupt()将不起作用,直到执行到wait(),sleep(),join()时,才马上会抛出 InterruptedException。
package com.shige.Thread;
/*
线程对象名.interrupt(); 打断线程休眠
*/
public class ThreadTest07 {
public static void main(String[] args) throws InterruptedException {
//创建线程
Thread thread=new Processor_07();
thread.setName("线程1");
//线程启动后5秒钟唤醒.打断线程的休眠
thread.start();
//利用主线程计时,5s之后
Thread.sleep(5000);
//打断线程休眠
thread.interrupt();
}
}
class Processor_07 extends Thread{
public void run(){
try {
Thread.sleep(10000000);
} catch (InterruptedException e) {
e.printStackTrace();
}
for (int i = 0; i <10 ; i++) {
System.out.println(Thread.currentThread().getName()+"------>"+i);
}
}
}