zoukankan      html  css  js  c++  java
  • 停止运行ExecutorService中的线程

    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,不去判断什么锁不锁。

  • 相关阅读:
    lombok 的使用
    SpringData Redis 常见操作(基于模板类RedisTemplate )
    Django,静态文件配置
    django简介与MTV,MVC
    HTTP请求响应,及工作原理
    阿萨斯

    javastrip
    css
    html
  • 原文地址:https://www.cnblogs.com/l2rf/p/3974861.html
Copyright © 2011-2022 走看看