多线程中线程池常见7个参数的详解

Posted 健康平安的活着

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程中线程池常见7个参数的详解相关的知识,希望对你有一定的参考价值。

一 线程池常见参数

1.1 概念

 1.2 coresize和maxsize,poolsize

1.corePoolSize

线程池的基本大小,即在没有任务需要执行的时候线程池的大小并且只有在工作队列满了的情况下才会创建超出这个数量的线程

2.maximumPoolSize

线程池中允许的最大线程数

3.poolSize

线程池中当前线程的数量

3者之间的关系:

 

新提交一个任务时的处理流程很明显:

1、如果当前线程池的线程数还没有达到基本大小(poolSize < corePoolSize),无论是否有空闲的线程新增一个线程处理新提交的任务;

2、如果当前线程池的线程数大于或等于基本大小(poolSize >= corePoolSize) 且任务队列未满时,就将新提交的任务提交到阻塞队列排队,等候处理workQueue.offer(command);

3、如果当前线程池的线程数大于或等于基本大小(poolSize >= corePoolSize) 且任务队列满时

3.1、当前poolSize<maximumPoolSize,那么就新增线程来处理任务;

3.2、当前poolSize=maximumPoolSize,那么意味着线程池的处理能力已经达到了极限,此时需要拒绝新增加的任务。至于如何拒绝处理新增的任务,取决于线程池的饱和策略RejectedExecutionHandler。

1.4 newFixedThreadPool

newFixedThreadPool中设定的线程数是核心线程数,还是最大线程数,开源代码如下:

通过查看源码:答案是:核心线程数

 

以上是关于多线程中线程池常见7个参数的详解的主要内容,如果未能解决你的问题,请参考以下文章

线程池创建的7个参数

Java多线程:线程池详解

Java多线程:线程池详解

多线程之美4一 线程池执行原理浅析

SpringBoot 整合线程池及各参数详解

java线程池参数详解