三:线程中断

作者: 知耻而后勇_zjh | 来源:发表于2017-07-31 11:24 被阅读0次

线程中断并不会让线程立即退出,而是给线程发送一个通知,告诉目标线程,现在希望他退出,至于线程接到通知后如何处理,完全由目标线程自己确定.
JDK里面,线程中断有三个方法:

       public void Thread.interrupt()   //中断线程
       public boolean Thread.isInterrupt()   //判断线程是否被中断
       public static boolean Thread.interrupted() //判断线程是否被中断,并且清除当前中断状态
public static void main(String[] args) throws Exception {
    Thread t1 = new Thread(){
        @Override
        public void run() {
            Thread.yield();
        }
    };
    t1.start();
    Thread.sleep(2000);
    t1.interrupt();
}

此处虽然对t1进行了中断,但是t1中没有任何中断处理的逻辑代码,所以这个中断不会有任何左右.
 如果希望t1 在中断后退出,做以下即可
public static void main(String[] args)throws InterruptedException {
    Thread t1 = new Thread(){
        @Override
        public void run() {
            while (true){
                if (Thread.currentThread().isInterrupted()){
                    System.out.println(Thread.currentThread().getName());
                    System.out.println("Interrupt");
                    break;
                }
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    System.out.println("线程在睡眠时被中断");
                    Thread.currentThread().interrupt();
                }
                Thread.yield();
            }
        }
    };
    t1.start();
    Thread.sleep(1000);
    t1.interrupt();
}
需要注意的是Thread.sleep(); 会抛出  InterruptedException 异常 ,此异常不是运行时异常,也就是说程序必须捕获处理它. 当程序运行被中断时,System.out.println("线程在睡眠时被中断")被执行,但是为了保证数据完整性,需要再次执行Thread.currentThread().interrupt()方法以重置标志位,才能再次判断中断情况。

相关文章

  • 三:线程中断

    线程中断并不会让线程立即退出,而是给线程发送一个通知,告诉目标线程,现在希望他退出,至于线程接到通知后如何处理,完...

  • 泥瓦匠聊并发编程基础篇:线程中断和终止

    1 线程中断 1.1 什么是线程中断? 线程中断是线程的标志位属性。而不是真正终止线程,和线程的状态无关。线程中断...

  • 阿里P8聊并发编程:线程中断和终止

    一、线程中断 1.什么是线程中断? 线程中断是线程的标志位属性。而不是真正终止线程,和线程的状态无关。线程中断过程...

  • 【多线程】——3.线程的中断

    线程中断的概念 java线程中断是一种协作机制 通过中断并不能直接终止线程的运行 需要被中断的线程自己处理中断 (...

  • 8.3 线程控制

    线程中断 方法:void interrupt():中断线程(本质没有中断操作,只是给线程对象加了个标记,设置其中断...

  • Java并发编程基础-理解中断

    章节 什么是中断 中断线程的方法 线程中断状态的判断以及何时被中断的线程所处 isInterrupted() 状态...

  • Java线程及多线程相关

    多线程 中断 每个线程都有一个boolean类型的中断状态。当在另一个线程中断该线程时,这个线程的中断状态将被设置...

  • (4)线程中断

    什么是线程中断 java中的线程中断并不是指强制线程中断执行,而是指调用线程中断起到一个通知作用,让线程知道自己被...

  • 7 什么是线程中断

    线程中断 线程中断指的是线程的一种状态,中断不是自发产生的,而是其它线程发出的一种指令.本线程通过判断是否接收中断...

  • 线程中断

    什么是线程中断?线程中断即线程运行过程中被其他线程打断了。 线程中断的重要方法2.1 java.lang.Thre...

网友评论

    本文标题:三:线程中断

    本文链接:https://www.haomeiwen.com/subject/dvfzkxtx.html