Java多线程之interrupt停止线程

作者: 进击de小黑 | 来源:发表于2018-08-21 16:47 被阅读6次

    平时在做线程任务停止的时候,可能很多情况下都是使用一个退出标志,使线程正常退出,也就是run方法完成后线程终止。这里我们说一下使用interrupt()方法来停止线程。
    首先,调用interrupt()方法仅仅是在当前线程中打了一个停止的标记状态,并不是真的停止线程,还需要结合线程的interrupted()完成线程的停止。

     class MThread extends Thread {
        int i = 0;
    
        @Override
        public void run() {
            super.run();
            try {
                while (true) {
                    if (this.interrupted()) {
                        throw new InterruptedException();
                    }
                    //TODO    线程业务逻辑
                    System.out.print("i=" + (i++));
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
                //TODO    处理线程中断
                
            }
        }
    }
    
    
    MThread mThread = new MThread();
    mThread.start();
    mThread.interrupt();
    

    当然也可以使用return;来控制程序的停止,但这里对线程中断的处理就不会像使用“抛异常”法这么的优雅,使用异常流能更好、更方便地控制程序的运行流程。

    相关文章

      网友评论

        本文标题:Java多线程之interrupt停止线程

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