博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java线程池参数含义
阅读量:6616 次
发布时间:2019-06-25

本文共 1094 字,大约阅读时间需要 3 分钟。

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

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

public class PmCollectDataHandlePool extends ThreadPoolExecutor 并且实现
@Override protected 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

你可能感兴趣的文章
用永中Office过把DJ瘾
查看>>
SSL/TLS协议簇加解密流程
查看>>
我的友情链接
查看>>
matlab中使用结构体(1)
查看>>
在Redhat 5 上手动创建DNS服务器
查看>>
Linux内核管理--内存(一)
查看>>
乱码过滤器
查看>>
浅谈生产场景如何对linux系统进行分区?
查看>>
RHCS 集群安装部署
查看>>
给10^7个数据量的磁盘文件进行排序
查看>>
2D骨骼动画工具DragonBones的使用教程
查看>>
16-11-10
查看>>
基于SSM&EasyUI的西服门店管理系统-java门店管理服装管理系统
查看>>
java之json转换
查看>>
Python之Subprocess模块
查看>>
gtk+学习笔记(六)
查看>>
其实主要涉及的就是分类,文章,摘要,博客自定义信息调用等方法
查看>>
页面的注释
查看>>
df 命令及 du 命令
查看>>
ubuntu搭建ftp服务器
查看>>