以下为构造线程池实例的构造方法:

corePoolSize:核心线程数量
maximumPoolSize:线程最大线程数
workQueue:阻塞队列,存储等待执行的任务,很重要,会对线程池运行过程产生重大影响
keepAliveTime:线程没有任务执行时最多保持多久时间终止
threadFactory:线程工厂,用来创建线程
rejectHandler:当拒绝处理任务时的策略

unit:参数keepAliveTime的时间单位,有7种取值,在TimeUnit类中有7种静态属性:

TimeUnit.DAYS;               //天
TimeUnit.HOURS;              //小时
TimeUnit.MINUTES;            //分钟
TimeUnit.SECONDS;            //秒
TimeUnit.MILLISECONDS;       //毫秒
TimeUnit.MICROSECONDS;       //微妙
TimeUnit.NANOSECONDS;        //纳秒

线程池中的几个常用方法:

execute():提交任务,交给线程池执行

submit():提交任务,能够返回执行结果 execute+Future

shutdown():关闭线程池,等待任务都执行完

shutdownNow():关闭线程池,不等待任务执行完

getTaskCount():线程池已执行和未执行的任务总数

getCompletedTaskCount():已完成的任务数量

getPoolSize():线程池当前的线程数量

getActiveCount():当前线程池正在执行任务的线程数量

扩展:可根据以上四个get方法做一个图形化的界面,实现线程监控,每隔一分钟刷新一次

线程池-Executor框架接口:

// 创建一个可缓存线程池
ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
// 创建一个可重用固定个数的线程池
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(2);
//创建一个定长线程池,支持定时及周期性任务执行
ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);
//创建一个单线程化的线程池
ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();

线程池:合理配置

CPU密集型任务,就需要尽量压榨CPU,参考值可以设为CPU的数量+1

IO密集型任务,参考值可以设置为CPU数量的2倍

线程池-ThreadPoolExecutor相关推荐

  1. Java线程池ThreadPoolExecutor使用和分析

    Java线程池ThreadPoolExecutor使用和分析(一) Java线程池ThreadPoolExecutor使用和分析(二) Java线程池ThreadPoolExecutor使用和分析(三 ...

  2. Python 线程池 ThreadPoolExecutor(二) - Python零基础入门教程

    目录 一.Python 线程池前言 二.Python 线程池 ThreadPoolExecutor 常用函数 1.线程池 as_completed 函数使用 2.线程池 map 函数使用 3.线程池 ...

  3. Python 线程池 ThreadPoolExecutor(一) - Python零基础入门教程

    目录 一.Python 线程池前言 二.Python 线程池原理 三.Python 线程池 ThreadPoolExecutor 函数介绍 四.Python 线程池 ThreadPoolExecuto ...

  4. Java线程池ThreadPoolExecutor的实例

    Java.util中的线程池和Spring框架对这个类的扩展 1.单独通过java里的ThreadPoolExecutor这个类,可以创建线程池,如果系统采用Spring框架设计,可以采用Thread ...

  5. java线程池执行器_Java线程池ThreadPoolExecutor的使用

    Java线程池ThreadPoolExecutor的使用 ThreadPoolExecutor就是我们用来实现线程的一个执行器,它实现了Excutor和ExecutorService接口.Excuto ...

  6. c++ 线程池_JAVA并发编程:线程池ThreadPoolExecutor源码分析

    前面的文章已经详细分析了线程池的工作原理及其基本应用,接下来本文将从底层源码分析一下线程池的执行过程.在看源码的时候,首先带着以下两个问题去仔细阅读.一是线程池如何保证核心线程数不会被销毁,空闲线程数 ...

  7. 线程池ThreadPoolExecutor的使用方法

    private static ExecutorService exec = new ThreadPoolExecutor(8, 8, 0L, TimeUnit.MILLISECONDS, new Li ...

  8. Java线程池—ThreadPoolExecutor

    2019独角兽企业重金招聘Python工程师标准>>> 为什么要使用线程池创建线程?     使用线程池的好处是减少在创建和销毁线程上所花的时间以及系统资源的开销,解决资源不足的问题 ...

  9. JUC(十)-线程池-ThreadPoolExecutor分析

    ThreadPoolExecutor 应用 & 源码解析 文章目录 ThreadPoolExecutor 应用 & 源码解析 一.线程池相关介绍 1.1 为什么有了JDK提供的现有的创 ...

  10. 线程池ThreadPoolExecutor使用简介

    2019独角兽企业重金招聘Python工程师标准>>> 一.简介  线程池类为 java.util.concurrent.ThreadPoolExecutor,常用构造方法为: Th ...

最新文章

  1. radio根据name 获取选中值及判断是否被选中
  2. 【MATLAB】二维矩阵可视化 MATLAB绘图
  3. 皮一皮:这小伙子怎么能掌握这么多高深技术!!!
  4. Tensorflow基于minist数据集实现自编码器
  5. postman 400 bad request 原因_盐城400电话
  6. 以太坊智能合约编程之带菜鸟入门教程
  7. Java与ElasticSerach的整合
  8. 行业牛人和开源软件改变技术世界
  9. jquery.dataTable.js 绘制表格使用详解
  10. 半路学编程,可以成为大牛吗?
  11. php m grep event,linux grep (linux查找关键字在php出现的次数)
  12. html语言标示,HTML语言剖析(二) HTML标记一览
  13. Log4Cpp 使用实例
  14. 获取本机内网、外网ip
  15. C语言之求两个数的最大公因数和最小公倍数
  16. SQL中convert()函数基本使用
  17. document image inpaint
  18. 小程序消息推送(含源码)java实现小程序推送,springboot实现微信消息推送
  19. MATLAB下载使用方法(学生使用)
  20. 新建安卓项目找不到R文件?——绝对零度试验机

热门文章

  1. Vue使用html2Canvas和canvas2Image下载二维码会模糊的问题解决方法
  2. EasyUI这个框架用了好久了,总结一下遇到的问题和解决方法
  3. 【白皮书分享】2021年互联网人才招聘白皮书.pdf(附下载链接)
  4. 【报告分享】2021年中国新经济企业500强发展研究报告.pdf(附下载链接)
  5. 别太相信自己,总有一种诈骗戳中你的刚需
  6. 【报告分享】快手创作者商业价值报告.pdf
  7. pytorch源码解析2——数据处理torch.utils.data
  8. python post cookies_python 之post、get与cookie实战
  9. 如何使用Facebook广告为shopify商店引流
  10. 吴恩达《机器学习》第九章:神经网络的学习