一 线程池常见参数

1.1 概念

1.2 7个参数说明

7个参数:

int corePoolSize, 常驻线程数量(核心)
int maximumPoolSize,最大线程数量
long keepAliveTime,TimeUnit unit,线程存活时间
BlockingQueue<Runnable> workQueue,阻塞队列(排队的线程放入)
ThreadFactory threadFactory,线程工厂,用于创建线程
RejectedExecutionHandler handler拒绝策略(线程满了)

1.3 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中设定的线程数是核心线程数,还是最大线程数,开源代码如下:

底层继续查看 new  ThreadPoolExecutor的源代码

通过查看源码:答案是:核心线程数和最大线程数都设置成了定义的线程数量。

多线程中线程池常见7个参数的详解以及执行流程相关推荐

  1. 线程池的创建及参数设置详解

    一. 常见线程池 线程池的创建方法主要有两类,第一是通过Executors 创建线程池,第二是通过 ThreadPoolExecutor 创建线程池. 首先我们来看通过Executors 创建的线程池 ...

  2. 【多线程】线程池的创建和参数设定

    为什么要使用线程池 在日常开发中为了提高代码运行效率,或多或少会用线程去执行异步任务,线程的创建和销毁是需要占用一定资源的. 首先我们看一下一个线程的创建步骤: 为线程堆栈分配和初始化大量内存块 需要 ...

  3. 深入剖析线程池基本原理以及常见面试题详解

    文章目录 面试官:能给我讲讲线程池的实现原理? 线程池类继承关系 ThreadPoolExecutor 核心数据结构 面试官:给我讲讲线程池的有哪些参数? 面试官:如何优雅的关闭线程? 线程的生命周期 ...

  4. 线程池框架_Java并发——Executor框架详解(Executor框架结构与框架成员)

    一.什么是Executor框架? 我们知道线程池就是线程的集合,线程池集中管理线程,以实现线程的重用,降低资源消耗,提高响应速度等.线程用于执行异步任务,单个的线程既是工作单元也是执行机制,从JDK1 ...

  5. 多线程之线程池-各个参数的含义- 阿里,美团,京东面试题目

    阿里的面试官问了个问题,如果corepollSize=10,MaxPollSize=20,如果来了25个线程 怎么办, 答案: 当一个任务通过execute(Runnable)方法欲添加到线程池时: ...

  6. Java多线程之线程池7大参数、底层工作原理、拒绝策略详解

    Java多线程之线程池7大参数详解 目录 企业面试题 线程池7大参数源码 线程池7大参数详解 底层工作原理详解 线程池的4种拒绝策略理论简介 面试的坑:线程池实际中使用哪一个? 1. 企业面试题 蚂蚁 ...

  7. pool python 传参数_Python-爬虫-多线程、线程池模拟(urllib、requests、UserAgent、超时等)...

    接着之前的MonkeyLei:Python-爬取页面内容(涉及urllib.requests.UserAgent.Json等) 继续练习下多线程,线程池模拟.. 我想这样: 1. 创建一个线程池,线程 ...

  8. 后端开发【一大波有用知识】Redis中的IO多线程(线程池)

    一.Redis中的IO多线程原理 ​服务端收到一条信息,给它deconde成一条命令 然后根据命令获得一个结果(reply) 然后将结果encode后,发送回去 redis的单线程是指,命令执行(lo ...

  9. Java的多线程和线程池的使用,你真的清楚了吗?

    Java的多线程和线程池的使用 多线程大大提高程序运行效率,我们在开发过程中经常会开启一个线程来执行一些费时的任务.开启一个线程有4种方式,在下面的文章我将详细的去讲解. 继承Thread 继承Thr ...

最新文章

  1. mysql 4.0.27 下载,CentOS编译Mysql 4.0.27数据库问题解决
  2. CrowdStrike加入VirusTotal阵营
  3. Gartner:人工智能将促使部分专业工作转型
  4. 三级结构_kegg pathway三级层级结构转对应表格
  5. Android 反编译apk文件(转)
  6. Leetcode--221.最大正方形
  7. 大学计算机一级word,大学计算机基础一级考试复习资料
  8. Linux 初始化之 Systemd机制简介
  9. 3-20Pytorch与张量裁剪运算
  10. 7000 亿!华为正式宣布,全世界为之颤抖!
  11. 最近写mapreduce程序从hbase中抽取程序遇到的一些问题
  12. IEEE极限编程:Word Ordering
  13. IIS 部署.NET网站无法访问解决办法
  14. 排序算法大比拼(2.1)——时间O(n log2n)篇之归并排序
  15. linux win10双系统启动顺序,Windows 10 和 Ubuntu 20.04 双系统 GRUB2 默认启动项的更改...
  16. 90%的人都不知道的Node.js 依赖关系管理(上)
  17. R语言使用caret包的train函数构建adaboost模型、模型调优、自定义设置trainControl函数和tuneLength参数
  18. 什么是模块化?为什么要模块化
  19. root+android+8.0,安卓8.0,手机ROOT权限获取依旧必备还是多此一举
  20. 中文之星智能狂拼iii .3 适中版 build 060612 官网

热门文章

  1. 7-85 根据输入的空气污染指数,输出相应的信息。7-86 分支结构——大小写字母判断7-87 A±B
  2. 北京大学肖臻老师《区块链技术与应用》公开课笔记17——ETH数据结构篇1(状态树1)
  3. 10分钟上手pythonpandas_10分钟pandas教程
  4. 【343天】我爱刷题系列102(2018.01.14)
  5. 杭电oj —— 2026
  6. 《云云众声》第90期:久久不见 新年第90期有新精彩!
  7. 爬虫基本原理与实战---1、爬虫实战概述
  8. C++中 char* 、string、 char、char[]在各种情况下的输入与输出
  9. C warning:statement with no effect [-Wunused-va...
  10. 计算机怎么剪切音乐然后合在一起,电脑上怎么剪切、合并音乐