Java ThreadPoolExecutor 线程池
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.ArrayBlockingQueue;public class ThreadPoolExample {public static void main(String[] args) {// 创建线程池对象ThreadPoolExecutor threadPool = new ThreadPoolExecutor(2, // 核心线程数3, // 最大线程数1, // 线程空闲时间TimeUnit.MINUTES, // 空闲时间的单位new ArrayBlockingQueue<>(2) // 任务队列);// 提交任务给线程池执行threadPool.execute(new Runnable() {@Overridepublic void run() {// 任务的具体逻辑System.out.println("Task executed by thread: " + Thread.currentThread().getName());}});// 关闭线程池threadPool.shutdown();}
}
ThreadPoolExecutor是Java中用于管理和执行线程任务的一个实现类。
new ThreadPoolExecutor的参数:
1. corePoolSize(核心线程数):
指定线程池中保持活动状态的线程数,即最小的线程数。即使线程处于空闲状态,核心线程也不会被回收。如果提交的任务数小于核心线程数,线程池会创建新的线程来处理任务。
2. maximumPoolSize(最大线程数):
指定线程池中允许存在的最大线程数。当提交的任务数超过核心线程数时,线程池会创建新的线程来处理任务,直到达到最大线程数。如果任务数继续增加,而线程池已经达到最大线程数,后续的任务将会被放入任务队列中等待执行。
3. keepAliveTime(线程空闲时间):
指定线程的空闲时间,即当线程池中的线程空闲时间超过该值时,多余的线程将被回收。只有当线程池中的线程数大于核心线程数时,才会应用空闲时间。
4. unit(空闲时间的单位):
指定线程空闲时间的单位,可以是TimeUnit.SECONDS、TimeUnit.MINUTES等。
5. workQueue(任务队列):
指定线程池的任务队列,用于存储等待执行的任务。可以使用不同的队列实现,如ArrayBlockingQueue、LinkedBlockingQueue等,这些队列都实现了BlockingQueue接口。
workQueue是一个容器,这个容器存储将要执行的任务 .
当线程池中的线程已经达到核心线程数,并且有新的任务提交时,这些任务会被放入任务队列中等待执行。
任务队列的大小会影响线程池的行为。如果任务队列的大小有限,当任务数超过队列大小时,线程池会根据最大线程数来创建新的线程来处理任务。如果任务队列的大小为无界(例如LinkedBlockingQueue),则线程池会一直接受新的任务,直到达到最大线程数。
通过调整这些参数,可以根据实际需求来配置线程池的行为。例如,通过增加核心线程数和最大线程数,可以提高线程池的并发能力;通过调整线程空闲时间和任务队列的大小,可以控制线程池的资源消耗和任务处理能力。 需要根据具体的应用场景和需求来选择合适的参数值,以达到最佳的性能和资源利用率。
相关文章:
Java ThreadPoolExecutor 线程池
import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.concurrent.ArrayBlockingQueue;public class ThreadPoolExample {public static void main(String[] args) {// 创建线程池对象ThreadPoolExecutor threadPool new…...
网络协议--IP选路
9.1 引言 选路是IP最重要的功能之一。图9-1是IP层处理过程的简单流程。需要进行选路的数据报可以由本地主机产生,也可以由其他主机产生。在后一种情况下,主机必须配置成一个路由器,否则通过网络接口接收到的数据报,如果目的地址不…...
使用udevil自动挂载U盘或者USB移动硬盘
最近在折腾用树莓派(实际上是平替香橙派orangepi zero3)搭建共享文件服务器,有一个问题很重要,如何在系统启动时自动挂载USB移动硬盘。 1 使用/etc/fstab 最开始尝试了用/etc/fstab文件下增加:"/dev/sda1 /home/orangepi/s…...
学习笔记二十二:K8s控制器Replicaset
K8s控制器Replicaset Replicaset控制器:概念、原理解读Replicaset概述Replicaset工作原理:如何管理PodReplicaset控制器三个组成部分 Replicaset资源清单文件编写技巧Replicaset使用案例:部署Guestbook留言板编写一个ReplicaSet资源清单资源清…...
2023-10-25 精神分析-领悟新技术的错误做法-持续数年的错误做法-记录与分析
摘要: 过去数年对于领悟技术, 采取的做法不能说是对达到目的毫无裨益,但是对突破技术和将技术融为自身这个目的来说, 没有达到。 而且随着时间的流逝, 过去已经熟悉的技术, 竟然会被忘掉!就像是没有涉猎过一样! 根本原因出在对技术的领悟的…...
Arrays 中的 asList()方法
public static <T> List<T> asList( T . . . a ){ return new ArrayList<>(a); } 返回由指定数组支持的固定大小的 list集合。对数组所做的更改将在返回的 l…...
基于自动化工具autox.js的抢票(猫眼)
1.看到朋友圈抢周杰伦、林俊杰演唱会票贼难信息,特研究了一段时间,用autox.js写了自动化抢票脚本,购票页面自动点击下单(仅限安卓手机)。 2.脚本运行图 3.前期准备工作 (1)autox.js社区官网:AutoX.js (2)b站上学习资料:10分钟学会AutoX.js hello world_哔哩哔哩_bi…...
Java架构师内功计算机网络
目录 1 导学2 网络功能和分类3 OSI七层模型3.1 局域网和广域网协议4 TCP/IP协议5 通信技术和交换技术5.1 通信技术5.2 交换技术5.2.1 路由技术5.2.2 传输介质6 通信方式和交换方式7 IP地址7.1 IP地址表示7.2 子网划分8 IPv69 网络规划与设计10 网络存储技术10.1 廉价磁盘几余阵…...
vue 中 mixin 和 mixins 区别
目录 前言 用法 全局Mixin 局部Mixin 代码 理解 高质量的Mixin使用 在Vue.js框架中,Mixin是一种非常重要和强大的功能,它允许开发者创建可复用的代码片段,并将其应用到一个或多个组件中。Vue提供了两种方式来使用Mixin,分别…...
reqable(小黄鸟)+雷电抓包安卓APP
x 下载证书保存到雷电模拟器根目录(安装位置) 为什么? Android7以上,系统允许每个应用可以定义自己的可信CA集,部分的应用默认只会信任系统预装的CA证书,而不会信任用户安装的证书,之前的方法安装Burp/Fiddler证书都是用户证书…...
高等数学啃书汇总重难点(七)微分方程
同济高数上册的最后一章,总的来说,这篇章内容依旧是偏记忆为主,说难不难说简单不简单: 简单的是题型比较死,基本上就是记公式,不会出现不定积分一般花样繁多的情况;然而也就是背公式并不是想的…...
阿里云对象存储OSS文件无法预览,Bucket设置了Referer
您发起的请求头中没有Referer字段或Referer字段为空,与请求Bucket设置的防盗链策略不相符。 解决方案 您可以选择以下任意方案解决该问题。 在请求中增加Referer请求头。 GET /test.txt HTTP/1.1 Date: Tue, 20 Dec 2022 08:48:18 GMT Host: BucketName.oss-examp…...
数字孪生技术:工业数字化转型的引擎
数字孪生是一种将物理实体数字化为虚拟模型的技术,这些虚拟模型与其物理对应物相互关联。这种虚拟模型通常是在数字平台上创建的,它们复制了实际设备、工厂、甚至整个供应链的运作方式。这使工业企业能够实现以下益处: 1. 实时监测和分析 数…...
算法刷题-哈希表
算法刷题-哈希表 242. 有效的字母异位词 给定两个字符串 *s* 和 *t* ,编写一个函数来判断 *t* 是否是 *s* 的字母异位词。 **注意:**若 *s* 和 *t* 中每个字符出现的次数都相同,则称 *s* 和 *t* 互为字母异位词。 思路 用一个哈希表来记…...
2023NOIP A层联测17 黑暗料理
题目大意 给出一个长度为 n n n的序列 a i a_i ai,要求删去若干个数,使得剩下的数中任意两个数都不是质数。在满足条件的情况下最多能保留几个数。 有 T T T组数据。 1 ≤ T ≤ 4 , 1 ≤ n ≤ 750 , 1 ≤ a i ≤ 1 0 9 1\leq T\leq 4,1\leq n\leq 75…...
关于nacos的配置获取失败及服务发现问题的排坑记录
nacos配置更新未能获取到导致启动报错 排查思路: 1、是否添加了nacos的启动pom依赖 参考: <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><…...
【QT】其他常用控件1
新建项目 scrollArea 滚动 toolBox 插入 tabWidget stackedWidget 切换 索引是0 运行后,没有切换按钮,结合pushbutton,加两个Button 代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent)…...
交换机/防火墙-基础配置-23.10.11
update 优化了目录逻辑 -10.24.2023 一.前置知识 1.MAC地址 交换机在给主机之间传递信息包时,通过MAC地址来标识每台主机 主机间发生信息包交换时,交换机就会将通信过的主机的mac地址存下 dis mac-address 交换机转发的数据包中,会包含一…...
alibaba.fastjson的使用(四)-- Json字符 与 JsonObject 的相互转化
目录 1. Json字符串转JsonObject 2. JsonObject转Json字符串 1. Json字符串转JsonObject 使用到的方法1: static JSONObject parseObject(String text) 使用到的方法2: public String getString(String key) /*** 将Json字符串转为JsonObject对象* 取值不存在时,返回null…...
linux 主机通信 ipv6 配置
1.检查系统内核是否支持IPv6协议: 在Linux控制台中运行下列命令: cat /proc/sys/net/ipv6/conf/all/disable_ipv6如果返回结果是0,就表明系统支持IPv6协议;若是1,则表明系统目前不支持IPv6协议; 2.禁用I…...
ComfyUI翻译节点终极指南:如何选择最适合你的AI创作翻译工具
ComfyUI翻译节点终极指南:如何选择最适合你的AI创作翻译工具 【免费下载链接】ComfyUI_Custom_Nodes_AlekPet Custom nodes that extend the capabilities of Comfyui 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI_Custom_Nodes_AlekPet 在AI图像生…...
网络通信技术基础知识,网络通信技术数据包介绍
网络通信技术是关键技术之一,对于网络通信技术,我们应对其有所了解。为增加大家对网络通信技术的认识,本文将对网络通信技术的数据包结构和原理予以介绍。如果你对网络通信技术存在兴趣,不妨继续往下阅读哦。 在网络通信中, "…...
CVPR 2026 | 全架构通吃!MatchED 插件式模块,CNN/Transformer/扩散模型都能无缝集成
点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达边缘检测是计算机视觉领域的基石任务,从图像分割、深度估计到3D重建,几乎所有高阶视觉任务都依赖精准的边缘信息。但长期以来,一个核心…...
ESP32S3-Cam + MPU6050 DMP移植避坑实录:从编译报错到姿态数据稳定输出的完整流程
ESP32S3-Cam与MPU6050 DMP移植实战:从编译报错到稳定姿态解算的全流程解析 当ESP32S3-Cam遇上MPU6050的DMP(数字运动处理器)功能,本应是物联网项目中实现低成本姿态检测的完美组合。但实际移植过程中,开发者往往会遭遇…...
工程仿真平台OpenRocket:从物理试验到数字孪生的技术跃迁
工程仿真平台OpenRocket:从物理试验到数字孪生的技术跃迁 【免费下载链接】openrocket Model-rocketry aerodynamics and trajectory simulation software 项目地址: https://gitcode.com/GitHub_Trending/op/openrocket 在现代工程设计领域,物理…...
FigmaCN:解决Figma英文界面障碍的设计师专属中文方案
FigmaCN:解决Figma英文界面障碍的设计师专属中文方案 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 作为一名设计师,您是否曾因Figma全英文界面而减慢工作流程&…...
3分钟搭建免费B站视频解析服务:零基础教程
3分钟搭建免费B站视频解析服务:零基础教程 【免费下载链接】bilibili-parse bilibili Video API 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse 你是否曾经想要保存B站的精彩视频却不知道如何操作?或者需要在自己的网站上嵌入B站视…...
Mac用户的移动Win10工坊:从WTG配置到驱动、激活、文件共享的完整避坑指南
Mac用户的移动Win10工坊:从WTG配置到驱动、激活、文件共享的完整避坑指南 当Mac用户需要运行Windows应用时,双系统方案往往是最佳选择。而通过Windows To Go(WTG)技术将Win10安装在移动硬盘上,不仅保留了Mac原生系统的…...
SiameseUIE部署指南:test.py中custom_entities字段详解
SiameseUIE部署指南:test.py中custom_entities字段详解 1. 概述 如果你正在使用SiameseUIE模型进行信息抽取,那么test.py脚本中的custom_entities字段就是你最需要关注的核心配置。这个看似简单的字段,实际上决定了模型如何精准地从文本中抽…...
Hunyuan-MT-7B翻译神器快速上手:手把手教你搭建多语言翻译服务
Hunyuan-MT-7B翻译神器快速上手:手把手教你搭建多语言翻译服务 1. 为什么选择Hunyuan-MT-7B 在当今全球化时代,多语言翻译需求日益增长。Hunyuan-MT-7B作为腾讯混元团队开源的70亿参数翻译模型,凭借其出色的性能和易用性,成为开…...
