Day13_67_interrupt() 方法

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);

          }


       }
   }
上一篇:多线程常用类


下一篇:生产者和消费者问题