【Java】ThreadPoolExecutor类参数简述

news2024/11/24 17:39:43

ThreadPoolExecutor类继承自AbstractExecutorService类,而AbstractExecutorService实现了ExecutorService接口

ThreadPoolExecutor类是Executor类中重要的实现类

1、ThreadPoolExecutor构造方法参数

在手册中, 一共有四种参数列表不同的构造方法。我们只需要来了解最后一种也就是参数最全的构造方法,就能了解全部四种了

如图,所有参数如下

下面我们对每一个参数做出说明

如果我们将一个线程池比作公司,那么将得到以下比喻

ThreadPoolExecutor类线程池中有两类线程:核心线程与临时线程。线程池核心线程相当于公司的正式员工,临时线程相当于公司的实习生。                                                                                   当任务数量超出核心线程数时,临时线程中会与核心线程一起执行任务。这些临时线程并不是一直存在的,而是有一个最大存活时长。当空闲(没有执行任务)临时线程的存活时间到达最大存活时间时,这个线程就会被销毁

int corePoolSize:线程池核心线程数。即公司正式员工。

int maximumPoolSize:线程池最大线程数。除了核心线程之外,线程池中还会有一些临                 时线程

最大线程数 = 核心线程数 + 最大临时线程数

公司员工最大总数 = 正式员工 + 实习生最大数量

long keepAliveTime:当线程数大于核心线程数时,多余的空闲线程存活的最长时间

TimeUnit unit:long keepAliveTime的单位

BlockingQueue<Runnable> workQueue:用以存放任务的阻塞队列。可以根据需求灵活确定队列的数据结构类型。比如数量比较固定,可以用ArrayBlockingQueue;数量变动比较大时,可以用LinkedBlockingQueue

ThreadFactory threadFactory:工厂模式的体现。此处使用默认的ThreadFactory作为工厂类

RejectedExecutionHandler handler:拒绝策略,当提交的任务过多而不能及时处理时,我们可以定制策略来处理任务

 2、四种拒绝策略 

 上述参数的最后一个RejectedExecutionHandler handler(拒绝策略)中包含四种类型,下面对这四种类型做出简述

ThreadPoolExecutor.AbortPolicy:直接抛出异常

ThreadPoolExecutor.CallerRunsPolicy:新添加的任务由添加任务的线程执行

ThreadPoolExecutor.Discard0ldestPoLicy:丢弃任务队列中最老的队伍

ThreadPoolExecutor.DiscardPolicy:丢弃当前新加的任务

用生活中的事情作类比

拒绝策略是指当提交的任务过多而不能及时处理时,定制策略来处理任务。

假如博主在周三满课,学生会却在周一来通知博主,让博主周三下午主持活动。这时博主便有四种拒绝策略,对应上面四种

ThreadPoolExecutor.AbortPolicy:博主直接情绪崩溃,什么也做不了

ThreadPoolExecutor.CallerRunsPolicy:让通知博主的那个人自己去主持活动,博主不管

ThreadPoolExecutor.Discard0ldestPoLicy:博主把周三下午的课翘掉,去主持学生会活动

ThreadPoolExecutor.DiscardPolicy:博主没有管学生会的活动,通知我的人也没有管,学生会活动没有举办成

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1258591.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【文末送书】程序员如何化解35岁危机?

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和技术。关…

网易云音频数据如何爬取?

在当今数字化时代&#xff0c;音频数据的获取和处理变得越来越重要。本文将详细介绍如何使用Objective-C语言构建音频爬虫程序&#xff0c;以爬取网易云音乐为案例。我们将从Objective-C的基础知识开始&#xff0c;逐步深入到爬取思路分析、构建爬虫框架、完整爬取代码等方面&a…

android trace文件的抓取与查看方法

本地手机抓取trace 解压android trace文件的抓取与查看方法 找到config.pbtx文件&#xff0c;连接手机push进去 # push config.pbtx &#xff0c;/data/local/tmp/为自定义push到的目录 adb push config.pbtx /data/local/tmp/ adb shell # 抓取trace&#xff0c; /data/loc…

Redis原理之五种数据类型笔记

目录 String List Set ZSet ​ Hash String List Set ZSet Hash

CTF图片隐写

1.题目给出的zip文件给出提示如下。 2.用 ARCHPR爆破出密码。 3.解压后发现1.png&#xff0c;为图片隐写。 4.使用010editor打开图片&#xff0c;发现缺少png文件头。 010editor官方下载链接&#xff1a;sweetscape.com/download/010editor/ 5.添加文件头保存。 6.使用图片隐写…

vue3+highlight.js代码高亮插件使用

先安装 npm install highlight.jsmain.js中引入&#xff0c;并注册自定义指令 ..... import hljs from highlight.js window.hljs hljs import highlight.js/styles/atom-one-light.css import highlight.js/lib/common import mitt from mitt .....app.directive(highlight…

HTML5+CSS3+JS小实例:九宫格图片鼠标移入移出方向感知特效

实例:九宫格图片鼠标移入移出方向感知特效 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport&…

鲲鹏测评:电视盒子什么品牌好?双十二口碑电视盒子品牌排行榜

最近我们收到很多网友的私信不知道电视盒子怎么选&#xff0c;想要我们推荐双十二值得入手的电视盒子&#xff0c;本年度我们已经共计测评过18款电视盒子&#xff0c;通过对比测评结果&#xff0c;我们整理了电视盒子品牌排行榜&#xff0c;双十二想买电视盒子的朋友们可不要错…

充电桩绝缘检测原理与示例

1、背景 充电桩绝缘检测是保证电动车充电安全的重要环节&#xff0c;通过对充电桩绝缘检测单租的测量和评估&#xff0c;来判断充电桩是否存在漏电等安全隐患&#xff0c;从而保证用户及周围环境的电器安全。 绝缘电阻&#xff1a;是指在特定的条件下&#xff0c;电气设备与接…

【Python数据结构与算法】--- 递归算法的应用 ---[乌龟走迷宫] |人工智能|探索扫地机器人工作原理

&#x1f308;个人主页: Aileen_0v0 &#x1f525;系列专栏:PYTHON数据结构与算法学习系列专栏&#x1f4ab;"没有罗马,那就自己创造罗马~" 目录 导言 解决过程 1.建立数据结构 2.探索迷宫: 算法思路 递归调用的“基本结束条件” 3.乌龟走迷宫的实现代码: …

【兔子王赠书第9期】ChatGPT进阶:提示工程入门

文章目录 写在前面ChatGPT推荐图书关键点编辑推荐内容简介推荐理由 粉丝福利写在后面 写在前面 人类一直在寻找、制造并使用工具&#xff0c;以扩展我们的能力&#xff0c;适应我们的环境&#xff0c;甚至超越我们的生物限制。现在&#xff0c;我们正站在一个历史性的分水岭之…

Doris-Stream Load(二十六)

Stream load 是一个同步的导入方式&#xff0c;用户通过发送 HTTP 协议发送请求将本地文件或数据流导入到 Doris 中。Stream load 同步执行导入并返回导入结果。用户可直接通过请求的返回体判断本次导入是否成功。 适用场景 Stream load 主要适用于导入本地文件&#xff0c;或…

【VUE】There are multiple modules with names that only differ in casing.

报错 There are multiple modules with names that only differ in casing. This can lead to unexpected behavior when compiling on a filesystem with other case-semantic. Use equal casing. Compare these module identifiers: 图示原因&#xff1a;大小写&#xff0c;有…

如何使用cpolar+Jellyfin自建私人影音平台【内网穿透】

&#x1f3a5; 个人主页&#xff1a;深鱼~ &#x1f525;收录专栏&#xff1a;cpolar &#x1f304;欢迎 &#x1f44d;点赞✍评论⭐收藏 文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpo…

接口自动化测试很难掌握吗?不!一小时学完

一. 什么是接口测试 接口测试是一种软件测试方法&#xff0c;用于验证不同软件组件之间的通信接口是否按预期工作。在接口测试中&#xff0c;测试人员会发送请求并检查接收到的响应&#xff0c;以确保接口在不同场景下都能正常工作。 就工具而言&#xff0c;常见的测试工具有…

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之Linux 进程管理 6》(10)

《Linux操作系统原理分析之Linux 进程管理 6》&#xff08;10&#xff09; 4 Linux 进程管理4.6 Linux 管道4.6.1 管道的概念4.6.2 无名管道1.终端使用2.程序中使用 4.6.2 命名管道1.终端使用2.程序中使用 4 Linux 进程管理 4.6 Linux 管道 4.6.1 管道的概念 1、管道是 linu…

浅谈智能配电房电力运维平台的开发与应用

安科瑞 华楠 摘 要&#xff1a;近年来&#xff0c;我国对电能的需求不断增加&#xff0c;智能电网建设越来越多。为实现对智能配电房设备运行状态的实时监测、态势觉察和态势可视化集中显示&#xff0c;基于智能配电房传感器和配电自动化站所终端单元&#xff08;DTU&#xf…

Transformers实战——文本相似度

文章目录 一、改写文本分类1.导入相关包2.加载数据集3.划分数据集4.数据集预处理5.创建模型6.创建评估函数7.创建 TrainingArguments8.创建 Trainer9.模型训练10.模型评估11.模型预测 二、交互/单塔模式1.导入相关包2.加载数据集3.划分数据集4.数据集预处理5.创建模型&#xff…

K 最近邻算法

K 最近邻算法 简单 KNN海伦约会手写数字识别KNN 算法的优缺点 K 最近邻&#xff08;K-NearestNeighbor&#xff0c;KNN&#xff09;算法&#xff0c;是 1967 年由 Cover T 和 Hart P 提出的一种用于分类与回归的方法。 基本原理&#xff1a;存在一个带标签的数据集&#xff08;…

用二维码展示产品信息,轻松解决产品宣传难题

为了方便客户更好的了解产品&#xff0c;提升产品宣传效率&#xff0c;可以搭建产品信息二维码系统。为每一类产品生成一个二维码&#xff0c;上传文字、图片、音视频等内容&#xff0c;将二维码印刷在产品外包装、画册、样品卡或说明书上&#xff0c;用户使用微信扫码就能查看…