线程池的核心参数有哪些???

devtools/2024/9/25 2:31:37/

 

线程池的核心参数包括以下七个:

  1. corePoolSize: 这是线程池中的核心线程数,即池中会保留的最少线程数。当提交任务时,如果当前线程数小于核心线程数,线程池会创建新的线程来执行任务。如果当前线程数等于或大于核心线程数,则任务会被放入任务队列等待执行,除非队列已满。

  2. maximumPoolSize: 表示线程池允许同时存在的最大线程数,包括核心线程和非核心线程(有时称为“救急”线程或“临时”线程)。当任务队列已满且仍有新任务提交时,线程池会尝试创建新的线程来执行任务,直到达到maximumPoolSize。此值必须大于等于corePoolSize

  3. keepAliveTime: 定义了非核心线程在空闲状态下等待新任务的最长时间。当线程池中的线程数超过corePoolSize,且有线程空闲时间达到keepAliveTime时,这些空闲线程会被终止,直到线程池大小回落到corePoolSize。单位由unit参数指定。

  4. unit: keepAliveTime的时间单位,常见的如TimeUnit.SECONDSTimeUnit.MILLISECONDS等。

  5. workQueue: 任务队列,用于存储待执行的任务。当核心线程都处于忙碌状态时,新提交的任务会被放入此队列中等待执行。通常使用阻塞队列(如ArrayBlockingQueueLinkedBlockingQueueSynchronousQueue等),以确保线程安全和任务调度的协调。

  6. threadFactory: 线程工厂,用于创建新线程。通过自定义线程工厂,可以设置线程的优先级、命名规则、是否为守护线程等属性,以便更好地管理和识别线程池中的线程。

  7. handler: 拒绝策略,当线程池和任务队列均无法接纳新任务时(即线程数已经达到maximumPoolSize,且任务队列已满),触发的拒绝策略。常见的拒绝策略有:

    • AbortPolicy(默认):抛出RejectedExecutionException异常。
    • CallerRunsPolicy:调用方所在的线程自行执行被拒绝的任务。
    • DiscardPolicy:默默地丢弃被拒绝的任务。
    • DiscardOldestPolicy:移除任务队列中最旧的任务(最先入队的未开始执行的任务),然后尝试重新提交当前被拒绝的任务。

这些核心参数可以通过构造函数ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler)来设置。正确配置这些参数对于优化线程池的性能、资源利用率以及系统整体响应能力至关重要。


http://www.ppmy.cn/devtools/8715.html

相关文章

给sample_gpt 增加 lisa 微调

论文 地址 概述 该论文提出了一种名为LISA的层重要性采样优化算法&#xff0c;旨在解决大规模语言模型训练中的内存瓶颈问题。其主要内容和贡献包括&#xff1a; 通过分析LoRA训练中各层权重范数的分布&#xff0c;发现了权重更新在底层和顶层更为集中的现象&#xff0c;揭…

Vue3+Vant开发:个人信息管理

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开心好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…

OJ:寻找独一无二的数

目录 &#x1f3dd;1.问题描述&#xff1a; &#x1f3dd;2.分析问题&#xff1a; &#x1f3dd;3.最终代码&#xff1a; &#x1f3dd;1.问题描述&#xff1a; &#x1f3dd;2.分析问题&#xff1a; 先看看下面的代码的结果是多少&#xff1f; #include<stdio.h> in…

C语言——const

1、函数中形式参数是否采用const取决于是否要修改原始数组的值。 例子如下&#xff1a; int sum(const int ar[], int n) const并非要求原始数组要是常量&#xff0c;而是让该函数将传进来的原始数组当成常量不做任何修改。当函数中对原始数组进行修改时&#xff0c;就会报错…

adb工具使用

作者简介&#xff1a; 一个平凡而乐于分享的小比特&#xff0c;中南民族大学通信工程专业研究生在读&#xff0c;研究方向无线联邦学习 擅长领域&#xff1a;驱动开发&#xff0c;嵌入式软件开发&#xff0c;BSP开发 作者主页&#xff1a;一个平凡而乐于分享的小比特的个人主页…

基于51单片机电子钟闹钟12/24小时制LCD显示( proteus仿真+程序+设计报告+讲解视频)

基于51单片机电子钟闹钟12/24小时制LCD显示 1. 主要功能&#xff1a;2. 讲解视频&#xff1a;3. 仿真设计4. 程序代码5. 设计报告6. 设计资料内容清单&&下载链接 基于51单片机电子钟闹钟12/24小时制LCD显示( proteus仿真程序设计报告讲解视频&#xff09; 仿真图proteu…

实测52.4MB/s!全志T3+FPGA的CSI通信案例分享!

CSI总线介绍与优势 CSI&#xff08;CMOS sensor parallel interfaces&#xff09;总线是一种用于连接图像传感器和处理器的并行通信接口&#xff0c;应用于工业自动化、能源电力、智慧医疗等领域&#xff0c;CSI总线接口示意图如下所示&#xff08;以全志科技T3处理器的CSI0为…

Yolo-world使用

1、安装 python pip install ultralytics 前往官网下载模型&#xff1a;https://docs.ultralytics.com/models/yolo-world/#key-features 我这里使用yolov8s-world.pt举例 最简单的使用示例 if __name__ __main__:model YOLO(model/yolov8s-world.pt)results model.pre…