首页 > 其他 > 详细

Java Thread interrupt

时间:2014-01-24 20:23:51      阅读:379      评论:0      收藏:0      [点我收藏+]

现有线程对象threadA,调用threadA.interrupt(),则threadA中interrupted状态会被置成false,很多线程中都是通过isInterrupted()方法来检测线程是否中断,但在使用该过程中需要注意,run()方法中是否有其他代码捕获了InterruptedException异常,如果是,则会出现线程无法中断的可能性,主要代码如下:

bubuko.com,布布扣
public class DemoTest() {
    public static void main(String[] args) {
        new DemoTest();
    }

    public DemoTest() {
        ThreadTest threadTest = new ThreadTest();
        threadTest.start();
        Thread.sleep(1000);
        threadTest.interrupt();//此处想中断线程,如果在中断的时刻,刚好该线程处于sleep状态,则会被该线程的sleep方法的异常捕获
    }

    class ThreadTest extends Thread {
        public void run() {
            while(!isInterrupted()) {
            
                 /**
                  * your business code
                  * blah.blah......
                  */
                try {
                    Thread.sleep(1000);//you may need take a break
                } catch(InterruptedException e) {
                    Thread.currentThread.interrupt();//此处关键,调用当前线程interrupt()方法,可能会导致想中断的线程无法中断,需再次调用当前线程的interrupt()方法
                }      
            }  
        }    
    }

}
bubuko.com,布布扣

Java Thread interrupt

原文:http://www.cnblogs.com/jadic/p/3532298.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!