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

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层处理过程的简单流程。需要进行选路的数据报可以由本地主机产生&#xff0c;也可以由其他主机产生。在后一种情况下&#xff0c;主机必须配置成一个路由器&#xff0c;否则通过网络接口接收到的数据报&#xff0c;如果目的地址不…...

使用udevil自动挂载U盘或者USB移动硬盘

最近在折腾用树莓派&#xff08;实际上是平替香橙派orangepi zero3&#xff09;搭建共享文件服务器&#xff0c;有一个问题很重要&#xff0c;如何在系统启动时自动挂载USB移动硬盘。 1 使用/etc/fstab 最开始尝试了用/etc/fstab文件下增加:"/dev/sda1 /home/orangepi/s…...

学习笔记二十二:K8s控制器Replicaset

K8s控制器Replicaset Replicaset控制器&#xff1a;概念、原理解读Replicaset概述Replicaset工作原理&#xff1a;如何管理PodReplicaset控制器三个组成部分 Replicaset资源清单文件编写技巧Replicaset使用案例&#xff1a;部署Guestbook留言板编写一个ReplicaSet资源清单资源清…...

2023-10-25 精神分析-领悟新技术的错误做法-持续数年的错误做法-记录与分析

摘要: 过去数年对于领悟技术, 采取的做法不能说是对达到目的毫无裨益&#xff0c;但是对突破技术和将技术融为自身这个目的来说, 没有达到。 而且随着时间的流逝, 过去已经熟悉的技术, 竟然会被忘掉&#xff01;就像是没有涉猎过一样&#xff01; 根本原因出在对技术的领悟的…...

Arrays 中的 asList()方法

public static <T> List<T> asList&#xff08; T . . . a &#xff09;{ return new ArrayList<>&#xff08;a&#xff09;&#xff1b; } 返回由指定数组支持的固定大小的 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框架中&#xff0c;Mixin是一种非常重要和强大的功能&#xff0c;它允许开发者创建可复用的代码片段&#xff0c;并将其应用到一个或多个组件中。Vue提供了两种方式来使用Mixin&#xff0c;分别…...

reqable(小黄鸟)+雷电抓包安卓APP

x 下载证书保存到雷电模拟器根目录(安装位置) 为什么? Android7以上&#xff0c;系统允许每个应用可以定义自己的可信CA集&#xff0c;部分的应用默认只会信任系统预装的CA证书&#xff0c;而不会信任用户安装的证书&#xff0c;之前的方法安装Burp/Fiddler证书都是用户证书…...

高等数学啃书汇总重难点(七)微分方程

同济高数上册的最后一章&#xff0c;总的来说&#xff0c;这篇章内容依旧是偏记忆为主&#xff0c;说难不难说简单不简单&#xff1a; 简单的是题型比较死&#xff0c;基本上就是记公式&#xff0c;不会出现不定积分一般花样繁多的情况&#xff1b;然而也就是背公式并不是想的…...

阿里云对象存储OSS文件无法预览,Bucket设置了Referer

您发起的请求头中没有Referer字段或Referer字段为空&#xff0c;与请求Bucket设置的防盗链策略不相符。 解决方案 您可以选择以下任意方案解决该问题。 在请求中增加Referer请求头。 GET /test.txt HTTP/1.1 Date: Tue, 20 Dec 2022 08:48:18 GMT Host: BucketName.oss-examp…...

数字孪生技术:工业数字化转型的引擎

数字孪生是一种将物理实体数字化为虚拟模型的技术&#xff0c;这些虚拟模型与其物理对应物相互关联。这种虚拟模型通常是在数字平台上创建的&#xff0c;它们复制了实际设备、工厂、甚至整个供应链的运作方式。这使工业企业能够实现以下益处&#xff1a; 1. 实时监测和分析 数…...

算法刷题-哈希表

算法刷题-哈希表 242. 有效的字母异位词 给定两个字符串 *s* 和 *t* &#xff0c;编写一个函数来判断 *t* 是否是 *s* 的字母异位词。 **注意&#xff1a;**若 *s* 和 *t* 中每个字符出现的次数都相同&#xff0c;则称 *s* 和 *t* 互为字母异位词。 思路 用一个哈希表来记…...

2023NOIP A层联测17 黑暗料理

题目大意 给出一个长度为 n n n的序列 a i a_i ai​&#xff0c;要求删去若干个数&#xff0c;使得剩下的数中任意两个数都不是质数。在满足条件的情况下最多能保留几个数。 有 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配置更新未能获取到导致启动报错 排查思路&#xff1a; 1、是否添加了nacos的启动pom依赖 参考&#xff1a; <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><…...

【QT】其他常用控件1

新建项目 scrollArea 滚动 toolBox 插入 tabWidget stackedWidget 切换 索引是0 运行后&#xff0c;没有切换按钮&#xff0c;结合pushbutton&#xff0c;加两个Button 代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent)…...

交换机/防火墙-基础配置-23.10.11

update 优化了目录逻辑 -10.24.2023 一.前置知识 1.MAC地址 交换机在给主机之间传递信息包时&#xff0c;通过MAC地址来标识每台主机 主机间发生信息包交换时&#xff0c;交换机就会将通信过的主机的mac地址存下 dis mac-address 交换机转发的数据包中&#xff0c;会包含一…...

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协议&#xff1a; 在Linux控制台中运行下列命令&#xff1a; cat /proc/sys/net/ipv6/conf/all/disable_ipv6如果返回结果是0&#xff0c;就表明系统支持IPv6协议&#xff1b;若是1&#xff0c;则表明系统目前不支持IPv6协议&#xff1b; 2.禁用I…...

ArcSWAT建模踩坑记:你的土壤数据库参数算对了吗?聊聊SPAW的那些默认值和单位陷阱

ArcSWAT土壤参数校准实战&#xff1a;避开SPAW计算中的5个致命误区 当水文模拟结果与实测数据出现系统性偏差时&#xff0c;经验丰富的建模者会首先检查土壤参数——这个隐藏在界面背后的"沉默变量"往往是误差的最大来源。SPAW作为ArcSWAT推荐的土壤参数计算工具&…...

如何为《欧洲卡车模拟2》实现完整智能驾驶体验?ETS2LA自动驾驶插件终极指南

如何为《欧洲卡车模拟2》实现完整智能驾驶体验&#xff1f;ETS2LA自动驾驶插件终极指南 【免费下载链接】Euro-Truck-Simulator-2-Lane-Assist Plugin based interface program for ETS2/ATS. 项目地址: https://gitcode.com/gh_mirrors/eur/Euro-Truck-Simulator-2-Lane-Ass…...

柔性LED灯丝DIY:从电路原理到创意饰品制作全攻略

1. 项目概述&#xff1a;当生日遇上柔性LED灯丝给孩子的生日派对准备一份独一无二的、会发光的惊喜&#xff0c;是很多家长和手工爱好者的心愿。这次&#xff0c;我们不买现成的塑料灯牌&#xff0c;而是亲手做一个能戴在头上或挂在脖子上的“生日数字灯冠”。这个项目的核心&a…...

UABEA:终极跨平台Unity资源编辑器,免费解锁游戏资源分析新境界

UABEA&#xff1a;终极跨平台Unity资源编辑器&#xff0c;免费解锁游戏资源分析新境界 【免费下载链接】UABEA c# uabe for newer versions of unity 项目地址: https://gitcode.com/gh_mirrors/ua/UABEA UABEA&#xff08;Unity Asset Bundle Extractor Avalonia&#…...

纯视觉纵深无感管控,落地硐室无人少人化透明值守模式技术白皮书

纯视觉纵深无感管控&#xff0c;落地硐室无人少人化透明值守模式技术白皮书副标题&#xff1a;摒弃井下繁杂传感布设&#xff0c;依靠暗光三维实景重构、深部空间无感感知、盲区跨镜无痕跟踪、身体指纹生物核验&#xff0c;实现井下 24 小时无人值守、全域透明运维前言矿山井下…...

终极FGO自动化助手:告别枯燥刷本,每天节省3小时游戏时间

终极FGO自动化助手&#xff1a;告别枯燥刷本&#xff0c;每天节省3小时游戏时间 【免费下载链接】FGA Auto-battle app for F/GO Android 项目地址: https://gitcode.com/gh_mirrors/fg/FGA Fate/Grand Automata&#xff08;简称FGA&#xff09;是一款专为Fate/Grand Or…...

Emacs AI编程助手:ai-code-interface.el深度集成指南

1. 项目概述&#xff1a;一个为Emacs注入AI灵魂的代码接口如果你是一位Emacs的深度用户&#xff0c;同时又对AI辅助编程抱有极大的热情&#xff0c;那么你很可能已经厌倦了在浏览器、终端和编辑器之间反复横跳的割裂体验。tninja/ai-code-interface.el这个项目&#xff0c;正是…...

构建个人代码仓库:提升开发效率的实践指南

1. 项目概述&#xff1a;一个面向21世纪开发者的代码仓库最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“21st-dev/1code”。光看这个名字&#xff0c;你可能觉得有点抽象&#xff0c;但点进去之后&#xff0c;我发现它其实是一个挺有想法的代码仓库。这个项目没有复杂的…...

OpenClaw 小龙虾智能体联动 DeepSeek 大模型部署实操攻略

前置准备 获取小龙虾open claw一键安装包&#xff08;www.totom.top&#xff09;并安装电脑端已成功安装并正常启动OpenClaw&#xff0c;右上角 Gateway 状态显示在线设备网络通畅&#xff0c;可正常访问 DeepSeek 开放平台拥有可接收验证码的手机号 / 微信&#xff0c;用于平…...

MCP服务器开发指南:为AI助手构建安全可控的外部工具扩展

1. 项目概述&#xff1a;一个为AI助手赋能的MCP服务器最近在折腾AI应用开发的朋友&#xff0c;可能都绕不开一个词&#xff1a;MCP。全称是Model Context Protocol&#xff0c;你可以把它理解成一套标准化的“插件协议”。它让像Claude、Cursor这类AI助手&#xff0c;能够安全、…...