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

停止运行ExecutorService中的线程

时间:2014-09-16 15:33:30      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   使用   div   sp   代码   log   

1 while(true){
2                     try {    
3                        sleep(1000);
4                     } catch (InterruptedException e) {
5                         // TODO Auto-generated catch block
6                         e.printStackTrace();
7                     }
8                 }

 

像如上代码,使用ExecutorService对象调用shutdownNow方法或shutdown方法,线程都不会停止。要想停止线程需要改成如下代码:

 1 while (!Thread.interrupted()) {
 2 
 3                     
 4 
 5                 try {
 6                     sleep(1000);
 7                 } catch (InterruptedException e) {
 8                     e.printStackTrace();
 9                     //终结循环  
10                     Thread.currentThread().interrupt();  
11                 }

 

shutdownNow方法与shutdown方法的区别:

 

1、shutdown方法: 这个方法,只能立刻interrupt那些目前没有任务,处于等待状态从blockingQueue获取任务的异常。而不能interrupt那些在任务执行过程中的thread,或者是任务执行过程中挂起的thread。

 

2、shutdownNow方法: 不管任务是否在执行中,一律interrupt,不去判断什么锁不锁。

 

停止运行ExecutorService中的线程

标签:style   blog   color   io   使用   div   sp   代码   log   

原文地址:http://www.cnblogs.com/l2rf/p/3974861.html

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