当前位置: 首页 > news >正文

JUC学习-22-浅谈线程池参数原理

JUC学习-22-浅谈线程池参数&原理

   public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue) {this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,Executors.defaultThreadFactory(), defaultHandler);}

参数1:int corePoolSize 核心线程数

参数2:int maximumPoolSize 最大线程数

参数3:long keepAliveTime 非核心线程空闲状态的存活时间

参数4:TimeUnit unit <span c时间单位(天、小时、分钟...) 用于配合第三个参数的

参数5:BlockingQueue workQueue 工作队列(阻塞队列)

参数6:ThreadFactory threadFactory 线程工厂

参数7:RejectedExecutionHandler handler 拒绝策略(AbortPolice 丢弃任务并抛出异常;DiscardPolice 丢弃任务但不抛出异常; DiscardOldestPolice 丢弃队列最前面的任务,然后尝试重新将任务加入到队列末尾,一直重复此过程;CallerRunsPolice 由调用线程处理该任务)

eg:

创建线程池,核心线程数(corePoolSize)10,工作队列(workQueue)长度10,最大线程数(maxmumPoolSize)。Execute执行30个任务 需要30个线程, 此时:

1、先创建10个核心线程 (任务 1 - 10)

2、10个线程放入到工作队列中 (任务 11 - 20)

3、根据最大核心线程数,创建10个非核心线程 (任务 1-21 - 30)

4、执行顺序: 先执行核心线程 (任务 1 - 10); 再执行 非核心线程 (任务 21 - 30); 再执行工作队列中的线程(任务 11 - 20)


image

http://www.vanclimg.com/news/380.html

相关文章:

  • C/C++环境搭建
  • 记录Mysql主从
  • To do list
  • 我的博客
  • 基于帧差法与Vibe算法的matlab前景提取
  • Coze开源版?别吹了!
  • 信创是什么.240501
  • Java内存马查杀
  • 同网段 IP 建立数据链路层连通性调试位置IP设备
  • Linux 系统的网络接口命名规则演变
  • 浅聊MySQL和postgreSQL
  • 为什么企业需要员工自助入职录入系统?
  • NRF54L15 RRAM的优点;
  • 树剖学习笔记
  • clickhouse重启,以及修改数据存储目录后重启失败的解决办法
  • 身份证,港澳通行证,台胞证,记一下三个常用的正则判断
  • 接收解析封装H264为PS数据的RTP包
  • Zabbix优化参考1
  • hi
  • 框幅式高光谱文献数据库,换“新”看!科研效率Up Up!
  • vxe-table 实现服务端筛选、分页筛选
  • 函数参数为字符串类型时,默认值设为NULL会报错
  • 中电金信:源启研发协同一体化平台、源启混沌工程平台通过信通院可信云最高级评估
  • LGP9310 [EGTS 2021] Luna likes Love 学习笔记
  • 使用Amazon Q和MCP优化深度学习环境
  • Linux 系统硬盘命名规则详细解析
  • 【LeetCode 160】算法:相交链表 —— 双指针法和数学法
  • cgroup机制
  • ls | tee 1.txt 如何拿到ls的返回值$?
  • 深入浅出:Clang中的控制流完整性(CFI)技术解析