isShutDown当调用shutdown()或shutdownNow()方法后返回为true。 
isTerminated当调用shutdown()方法后,并且所有提交的任务完成后返回为true;
isTerminated当调用shutdownNow()方法后,成功停止后返回为true;
如果线程池任务正常完成,都为false

import java.util.concurrent.Callable;

public class ShortTask implements Callable {
@Override
public Object call() throws Exception {
System.out.println("短任务");
return null;
}
}
import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit; public class LongTask implements Callable {
@Override
public Object call() throws Exception {
System.out.println("长任务");
TimeUnit.SECONDS.sleep(5);
return null;
}
}

  

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit; public class Main { public static void main(String[] args) {
ScheduledExecutorService service = Executors.newScheduledThreadPool(4);
service.submit(new ShortTask());
service.submit(new ShortTask());
service.submit(new LongTask());
service.submit(new ShortTask());
System.out.println("isShutdown:" + service.isShutdown());
System.out.println("isTerminated:" + service.isTerminated());
service.shutdown();
// List<Runnable> list = service.shutdownNow();
// System.out.println(list.size());
System.out.println("isShutdown:" + service.isShutdown());
System.out.println("isTerminated:" + service.isTerminated());
try {
while (!service.awaitTermination(1, TimeUnit.SECONDS)) {
System.out.println("线程池没有关闭");
System.out.println("isTerminated:" + service.isTerminated());
}
} catch (InterruptedException e) {
e.printStackTrace();
} System.out.println("线程池已经关闭");
System.out.println("isTerminated:" + service.isTerminated());
}
}

  

/*
执行service.shutdown();
短任务
短任务
长任务
短任务
isShutdown:false
isTerminated:false
isShutdown:true
isTerminated:false
线程池没有关闭
isTerminated:false
线程池没有关闭
isTerminated:false
线程池没有关闭
isTerminated:false
线程池没有关闭
isTerminated:false
线程池已经关闭
isTerminated:true*/ /*
执行List<Runnable> list = service.shutdownNow();
System.out.println(list.size());
短任务
短任务
长任务
isShutdown:false
isTerminated:false
1
isShutdown:true
isTerminated:false
线程池已经关闭
isTerminated:true
*/ /*
如果不执行shutdown,也不执行shutdownNow:
短任务
短任务
长任务
短任务
isShutdown:false
isTerminated:false
isShutdown:false
isTerminated:false
线程池没有关闭
isTerminated:false
线程池没有关闭
isTerminated:false
线程池没有关闭
isTerminated:false
线程池没有关闭
isTerminated:false
线程池没有关闭
isTerminated:false
线程池没有关闭
isTerminated:false
线程池没有关闭
isTerminated:false
线程池没有关闭
isTerminated:false
线程池没有关闭
isTerminated:false
......一直这样输出
*/

  

Java线程池,isShutDown、isTerminated的作用与区别的更多相关文章

  1. java线程池的使用与详解

    java线程池的使用与详解 [转载]本文转载自两篇博文:  1.Java并发编程:线程池的使用:http://www.cnblogs.com/dolphin0520/p/3932921.html   ...

  2. Java线程池使用和常用参数

    多线程问题: 1.java中为什么要使用多线程使用多线程,可以把一些大任务分解成多个小任务来执行,多个小任务之间互不影像,同时进行,这样,充分利用了cpu资源. 2.java中简单的实现多线程的方式 ...

  3. 【java线程系列】java线程系列之java线程池详解

    一线程池的概念及为何需要线程池: 我们知道当我们自己创建一个线程时如果该线程执行完任务后就进入死亡状态,这样如果我们需要在次使用一个线程时得重新创建一个线程,但是线程的创建是要付出一定的代价的,如果在 ...

  4. 并发编程(十一)—— Java 线程池 实现原理与源码深度解析(一)

    史上最清晰的线程池源码分析 鼎鼎大名的线程池.不需要多说!!!!! 这篇博客深入分析 Java 中线程池的实现. 总览 下图是 java 线程池几个相关类的继承结构:    先简单说说这个继承结构,E ...

  5. Netty核心概念(7)之Java线程池

    1.前言 本章本来要讲解Netty的线程模型的,但是由于其是基于Java线程池设计而封装的,所以我们先详细学习一下Java中的线程池的设计.之前也说过Netty5被放弃的原因之一就是forkjoin结 ...

  6. Java线程池的底层实现与使用

    前言 在我们进行开发的时候,为了充分利用系统资源,我们通常会进行多线程开发,实现起来非常简单,需要使用线程的时候就去创建一个线程(继承Thread类.实现Runnable接口.使用Callable和F ...

  7. 【转载】深度解读 java 线程池设计思想及源码实现

    总览 开篇来一些废话.下图是 java 线程池几个相关类的继承结构: 先简单说说这个继承结构,Executor 位于最顶层,也是最简单的,就一个 execute(Runnable runnable) ...

  8. Java并发指南12:深度解读 java 线程池设计思想及源码实现

    ​深度解读 java 线程池设计思想及源码实现 转自 https://javadoop.com/2017/09/05/java-thread-pool/hmsr=toutiao.io&utm_ ...

  9. 深入理解 Java 线程池

    一.简介 什么是线程池 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务. 为什么要用线程池 如果并发请求数量很多,但每个线程执行的时间很短,就会出现频繁的创建 ...

  10. Java线程池使用说明

    Java线程池使用说明 转自:http://blog.csdn.net/sd0902/article/details/8395677 一简介 线程的使用在java中占有极其重要的地位,在jdk1.4极 ...

随机推荐

  1. 将流数据输出到Mysql中

    outputMysqlApp.scala import java.sql.DriverManager import org.apache.spark.SparkConf import org.apac ...

  2. Linux服务器下载与上传文件

    一.图形化工具 FileZilla.SecureCRT,连接Linux服务器后直接操作 二.命令 使用终端模拟软件连接服务器后,首先安装lrzsz工具包 yum install lrzsz rz ,上 ...

  3. java引用的强制转型

    在java的面向对象的特性里,父类的引用可以指向子类的实例对象.但是,如果一个引用b(b本身指向了一个对象)想赋值给引用a,b不是a的类型且不是a的子类类型,那么就需要强制转换,并有失败的可能性,这个 ...

  4. visual studio之X64调试问题

    这个问题没有解决. 只能X86啦!

  5. python预科前三天:计算器知识、Python下载和安装、Pycharm下载安装激活设置、解释型和编译型、git、思维导图、显示隐藏文件、隐藏已知文件扩展名、创建组织、创建项目、提交作业、排BUG技巧

    1.计算机组成结构:CPU.硬盘.内存.输入输出设备.主板.电源. 2.硬件之间的协作关系:是CPU运算完后给操作系统.专业术语叫指令. 3.键盘输入a之后发生的事情:键盘-CPU-操作系统-显卡-显 ...

  6. nginx发布静态资源

    nginx发布静态资源 参考 ngx_http_index_module index指令 ngx_http_core_module http指令 location指令 listen指令 root指令 ...

  7. Linux下的SVN服务器搭建(八)

    1. 通过yum命令安装svnserve yum -y install subversion #查看svn安装位置 rpm -ql subversion 2. 创建版本库目录(此仅为目录,为后面创建版 ...

  8. zzDeep Learning Papers Translation(CV)

    Deep Learning Papers Translation(CV) Image Classification AlexNetImageNet Classification with Deep C ...

  9. JDOJ 1152 是否是素数

    1152: 是否是素数 https://neooj.com:8082/oldoj/problem.php?id=1152 题目描述 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息. ...

  10. 【java】获取昨天/今天/明天日期

    昨天: SimpleDateFormat sdf=new SimpleDateFormat("yyyMMdd"); Calendar calendar = new Gregoria ...