首页 > 代码库 > 停止运行ExecutorService中的线程
停止运行ExecutorService中的线程
1 while(true){2 try { 3 sleep(1000);4 } catch (InterruptedException e) {5 // TODO Auto-generated catch block6 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中的线程
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。