转载自 http://blog.csdn.net/zhouhl_cn/article/details/7392607 感谢分享

项目中开发通常不会直接使用ThreadPoolExecutor,而是通过Executors.newFixedThreadPool()这种简易写法,创建适合自己项目的线程池。但是了解最基本的线程池ThreadPoolExecutor是十分必要的,尤其是做一些定制方法。比如在执行完一个线程任务后,进行后续操作,此时如果自己实现一个类继承自ThreadPoolExecutor

public class PmCollectDataHandlePool extends ThreadPoolExecutor

并且实现
@Overrideprotected void afterExecute(Runnable r, Throwable t) 是十分方便的做法

一下参数来自转载
  • corePoolSize

核心线程数,核心线程会一直存活,即使没有任务需要处理。当线程数小于核心线程数时,即使现有的线程空闲,线程池也会优先创建新线程来处理任务,而不是直接交给现有的线程处理。

核心线程在allowCoreThreadTimeout被设置为true时会超时退出,默认情况下不会退出。

  • maxPoolSize

当线程数大于或等于核心线程,且任务队列已满时,线程池会创建新的线程,直到线程数量达到maxPoolSize。如果线程数已等于maxPoolSize,且任务队列已满,则已超出线程池的处理能力,线程池会拒绝处理任务而抛出异常。

  • keepAliveTime

当线程空闲时间达到keepAliveTime,该线程会退出,直到线程数量等于corePoolSize。如果allowCoreThreadTimeout设置为true,则所有线程均会退出直到线程数量为0。

  • allowCoreThreadTimeout

是否允许核心线程空闲退出,默认值为false。

  • queueCapacity

任务队列容量。从maxPoolSize的描述上可以看出,任务队列的容量会影响到线程的变化,因此任务队列的长度也需要恰当的设置。

线程池按以下行为执行任务

  1. 当线程数小于核心线程数时,创建线程。
  2. 当线程数大于等于核心线程数,且任务队列未满时,将任务放入任务队列。
  3. 当线程数大于等于核心线程数,且任务队列已满
    1. 若线程数小于最大线程数,创建线程
    2. 若线程数等于最大线程数,抛出异常,拒绝任务

转载于:https://www.cnblogs.com/juniorMa/p/5852170.html

java线程池参数含义相关推荐

  1. java线程池参数_java线程池参数设置原则,如何设置线程池参数比较合理?

    线程池的参数应该怎样设置呢?相信对于很多的人来说这也是一个比较难的问题,下面就让我们一起来解决一下,究竟应该如何设置线程池的参数才是最合理的吧! 首先在设置参数的时候,有以下的几点是我们需要考虑到的! ...

  2. Java线程池参数、执行流程及线程数配置建议

    1. 线程池参数详解 corePoolSize:线程池中常驻核心线程数: maximumPoolSize:线程池能够容纳同时执行的最大线程数: keepAliveTime:多余的空闲线程存活时间: u ...

  3. Java线程池参数详解

    1:前言 在使用线程池时,为了获取最佳的性能,常常需要手动指定线程池的参数,ThreadPoolExecutor是最常用的线程池执行器,它有四个构造方法,参数最多的构造方法有7个参数,下面将详细介绍这 ...

  4. Java线程池参数分析

    线程池组成 创建线程池 创建线程池通过Executors的工厂方法来创建线程池实例. 实际上Executors创建的线程池实例最终都是通过实例化配置不同参数的ThreadPoolExecutor对象. ...

  5. java线程池参数面试题,附赠复习资料

    前言 作为同时具备高性能.高可靠和高可扩展性的典型键值数据库,Redis不仅功能强大,而且稳定,理所当然地成为了大型互联网公司的首选. 众多大厂在招聘的时候,不仅会要求面试者能简单地使用Redis,还 ...

  6. Java多线程学习六:使用线程池比手动创建线程好在那里以及常用线程池参数的意义

    为什么要使用线程池 首先,回顾线程池的相关知识,在 Java 诞生之初是没有线程池的概念的,而是先有线程,随着线程数的不断增加,人们发现需要一个专门的类来管理它们,于是才诞生了线程池.没有线程池的时候 ...

  7. Java 线程池及参数动态调节详解

    前前言:本文搬自:why技术 前言:曾经自诩对线程池了如指掌,不料看了美团的一篇技术文章后才知道原来线程池的参数还可以动态调节. 经典面试题 在这篇文章中我主要回答上面抛出的这个问题:你这几个参数的值 ...

  8. 【Java 并发编程】线程池机制 ( 线程池阻塞队列 | 线程池拒绝策略 | 使用 ThreadPoolExecutor 自定义线程池参数 )

    文章目录 一.线程池阻塞队列 二.拒绝策略 三.使用 ThreadPoolExecutor 自定义线程池参数 一.线程池阻塞队列 线程池阻塞队列是线程池创建的第 555 个参数 : BlockingQ ...

  9. java线程池的参数设置

    java线程池的参数设置 在说如何对线程池优化之前重复一下线程的7大参数 corePoolSize: 核心线程数,也是线程池中常驻的线程数,线程池初始化时默认是没有线程的,当任务来临时才开始创建线程去 ...

最新文章

  1. 暴力拒绝白嫖,著名开源项目作者删库跑路!神秘Bug影响超2万个项目,亚马逊云也躺枪...
  2. sqlite 0转换为bit_DA转换实例
  3. html5声频audio和视频video
  4. Chrome_调试js出现Uncaught SyntaxError: Unexpected identifier
  5. fieldset 添加2个legend_第231号!增补乙基纤维素等2个饲添进入饲料添加剂品种目录(2013)...
  6. sdutoj 2624 Contest Print Server
  7. python opencv 识别角度_OpenCV入门之获取图像的旋转角度
  8. filebeat + logstash 发送日志至kafka 入门
  9. 据说,很多搞科研的硕博生,都容易产生以下20个错觉,看看你中了几枪?
  10. 破圈法求最小生成树_【学科加油站】悉大COMP9007 最小生成树知识点总结!
  11. 小米手机修改imei教程_小米手机imei码和s/n码以及测试调试界面唤起代码
  12. win10计算机变成了英文,Win10系统中自带的Office(Word,Excel)突然变成英文怎么变回中文...
  13. 使用SVD奇异值分解求解PCA+Python实现
  14. python在经济学的应用_『经济学在读研究生学习python可以用来做什么』python经济应用教程...
  15. V20变频器手自动切换(就地远程切换)的具体方法示例
  16. 5G助推直播行业快速发展
  17. goldendict在线子典 goldendict
  18. 专项训练——判断推理
  19. kprobe与perf probe使用简单记录
  20. 【CVPR 2022】Deblur-NeRF: Neural Radiance Fields from Blurry Images

热门文章

  1. GPU Gems2 - 7 带位移映射的细分表面自适应镶嵌
  2. 受限玻尔兹曼机准备知识——蒙特卡洛方法
  3. 生成特定分布随机数的方法:Python seed() 函数numpy scikit-learn随机数据生成
  4. 数据对拍代码 c++
  5. ADO.NET改进防注入
  6. ubuntu安装配置elasticSearch(vagrant)
  7. ubuntu解压zip文件乱码问题
  8. Java学习笔记(4)——枚举类型
  9. iPhone开发资料之内存管理 ,循环引用导致的内存问题
  10. 小程序中textarea点击按钮事件