码迷,mamicode.com
首页 > 编程语言 > 详细

如何正确停止线程

时间:2015-07-12 00:09:34      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

关于如何正确停止线程,这篇文章(how to stop thread)给出了一个很好的答案, 总结起来就下面3点(在停止线程时):
1. 使用violate boolean变量来标识线程是否停止
2. 停止线程时,需要调用停止线程的interrupt()方法,因为线程有可能在wait()或sleep(), 提高停止线程的即时性
3. 对于blocking IO的处理,尽量使用InterruptibleChannel来代替blocking IO
核心如下:
If you are writing your own small thread then you should follow the following example code.
private volatile Thread myThread;
public void stopMyThread() {
    Thread tmpThread = myThread;
    myThread = null;
    if (tmpThread != null) {
        tmpThread.interrupt();
    }
}


public void run() {
    if (myThread == null) {
       return; // stopped before started.
    }
    try {
        // all the run() method‘s code goes here
        ...
        // do some work
        Thread.yield(); // let another thread have some time perhaps to stop this one.
        if (Thread.currentThread().isInterrupted()) {
           throw new InterruptedException("Stopped by ifInterruptedStop()");
        }
        // do some more work
        ...
    } catch (Throwable t) {
       // log/handle all errors here
    }
}

如何正确停止线程

标签:

原文地址:http://www.cnblogs.com/zhang-pengcheng/p/4639532.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!