Android技术知识Android开发Android开发经验谈

Java多线程之interrupt停止线程

2018-08-21  本文已影响6人  进击de小黑

平时在做线程任务停止的时候,可能很多情况下都是使用一个退出标志,使线程正常退出,也就是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;来控制程序的停止,但这里对线程中断的处理就不会像使用“抛异常”法这么的优雅,使用异常流能更好、更方便地控制程序的运行流程。

上一篇下一篇

猜你喜欢

热点阅读