JAVA线程池的使用
一、池化思想和JAVA线程池
池化是很重要的思想;池化的好处是提供缓冲和统一的管理。这个笔者在本人的数据库连接池的博客中已经提到过了(JAVA常用数据库连接池_王者之路001的博客-CSDN博客
)。
线程池是另一种池化思想的运用,把线程放入池中进行管理。这种方法的好处是可以避免线程的创建、切换和销毁,因为这些过程非常耗资源。
JAVA线程池就是这样的一种线程池。
二、JAVA线程池基本原理
JAVA线程池的基本原理,其实就是对线程的生产者-消费者模型。线程池对产生的任务进行序贯执行。
JAVA线程池主要做的事情是对线程池的管理和任务的执行。

如上图所示,右半部分是线程池的管理,而左半部分是任务的执行。
任务执行通过阻塞队列来完成。
线程池执行任务如下图所示:

JAVA线程池会确定核心线程数和最大线程数,来控制线程池的大小。
三、JAVA线程池的使用
JAVA线程池主要有newCachedThreadPool、newFixedThreadPool、newSingleThreadExecutor和newScheduledThreadPool。
一般通过父类ExecutorService声明使用。代码样例如下:
public class FixedThreadPool {public static void main(String[] args) {ExecutorService executorService = Executors.newFixedThreadPool(10);for (int i = 0; i < 200; i++) {executorService.execute(new Task());}executorService.shutdown();}
}
其中,Task为相关线程。也可以采用匿名函数等方式运行。
四、避免的问题
一般情况下,大厂都不建议工程师自己创建线程池,因为线程池创建很容易消耗大量内存。大厂一般有自己的线程池创建模型。
参考文献
[1]Java线程池实现原理及其在美团业务中的实践 - 美团技术团队
[2]面试必问:Java 线程池 | Java程序员进阶之路
[3]JUC线程池: ThreadPoolExecutor详解 | Java 全栈知识体系
[4]https://www.cnblogs.com/vipstone/p/14149065.html
[5]彻底搞懂Java线程池的工作原理-51CTO.COM
[6]https://www.cnblogs.com/pcheng/p/13540619.html
相关文章:
JAVA线程池的使用
一、池化思想和JAVA线程池 池化是很重要的思想;池化的好处是提供缓冲和统一的管理。这个笔者在本人的数据库连接池的博客中已经提到过了(JAVA常用数据库连接池_王者之路001的博客-CSDN博客 )。 线程池是另一种池化思想的运用,把…...
力扣56.合并区间
文章目录力扣56.合并区间题目描述排序合并力扣56.合并区间 题目描述 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中…...
代码随想录二刷Day03链表: 24.两两交换链表中的节点,19.删除链表的倒数第N个节点,面试题 02.07. 链表相交,142.环形链表||
24.两两交换链表中的节点 文章链接:代码随想录 (programmercarl.com) 思路: (1)首先如果要处理相邻两个节点的话,一定需要操作两个节点的前一个节点才可以,因此,本题需要设定一个虚拟头节点 …...
我应该在我的博客上写什么? 介绍如何撰写初学者容易担心的文章
我想有很多人开了博客,但想不起来写作,无法取得进展。 博客的主题和文章的内容不会仅仅通过写你想做的事情来工作。 重要的是要了解用户想要阅读的内容以及人们可能收集的内容,并将其与您想要编写的内容很好地匹配。 这一次,我…...
嵌入式C语言设计模式 --- 外观模式
1 - 什么是外观模式? 外观模式(Facade Pattern),是一种比较简单的结构型模式,它存在的目的,也是为了简单。 外观模式隐藏了一系列接口的复杂性,旨在为外部客户端提供一个更高层次且统一简单的接口,简化了客户端调用某些模块的一系列操作。 外观模式应该是软件工程师…...
若依ruoyi——手把手教你制作自己的管理系统【三、代码生成】
昨天情人节一( ̄︶ ̄*)) 送给赛利亚一((* ̄3 ̄)╭ ********* 专栏略长 爆肝万字 细节狂魔 请准备好一键三连 ********* 修改后的页面: 干干净净贼舒服一Ψ( ̄∀ ̄)Ψ——Ψ( ̄∀&#x…...
SCI论文写作神器集合 —— 超级实用
特此声明: 本文拷贝多处别人的内容,并给出具体的链接 本文所提到的软件都为博主在文章撰写过程中发掘的比较实用的工具,旨在帮助小伙伴们更快更有效率的完成文章发表,如果其他好用的工具,欢迎各位交流~~ 一、文献搜索神…...
MAC 系统安装多版本 JDK 并任意切换
1、背景 在进行 Java 开发的过程中,我们可能需要使用不同版本的 JDK。例如:一些旧的 Java 应用程序只能在旧版本的 JDK 上运行,而一些新的 Java 应用程序需要较新的 JDK 才能运行。 在 MAC 系统上,如何安装多个版本的 JDK 并配置…...
配置 Smart Link 接口时需注意的互斥命令
配置 Smart Link 接口时需注意的互斥命令 一、接口加入Smart Link组功能与以下功能互斥一、接口加入Smart Link组功能与以下功能互斥 注:当接口已经加入Smart Link组,则不能再配置以下功能;反之,当接口已经配置以下功能ÿ…...
QT的下载和安装
这里介绍的是QT官方方式下载,每次都让我很糊涂,就记载一下。先是下载QT online installerhttps://www.qt.io/download 在下方有Go Open Sourcehttps://www.qt.io/download-open-source 在下方有Download the Qt Online installerhttps://www.qt.io/downl…...
nacos配置中心与服务注册中心
文章目录 目录 文章目录 前言 一、服务注册与发现中心 二、配置中心 总结 前言 Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它是 Spring Cloud Alibaba 组件之一,负责服务注册发现和服务配置. [服务治理的作用和微服务配置管理] Na…...
UE4 手把手教你做插件(1) 从代码引用插件
0,前言 我看的是 技术宅阿棍儿 的视频,B站有。 系列视频:从代码引用插件_哔哩哔哩_bilibili 看不懂,只能边查资料边看,讲的顺序有点乱 1,根据视频提示创建第三方插件 注意:如果只有空白插件的情…...
【Mybatis源码解析】一级缓存和二级缓存源码解析
文章目录缓存使用缓存源码测试代码上一篇《【Mybatis源码解析】mapper实例化及执行流程源码分析》,主要讲解了Mybatis的基本原理一级执行的流程,这一章来讲一下Mybatis的两个缓存:一级缓存和二级缓存。 因为网上大部分都是使用xml配置的方式…...
你知道MES实施的要点吗?
随着国家行动纲领:中国制造2025(智能制造)的发布,MES系统在制造业的工厂中所占比重越来越大,越来越多的工厂选择使用MES完成工厂的信息化、数字化、智能化生产。伴随着企业对MES的需求不断增大,生产MES的厂…...
告诉你为什么为什么 SELECT COUNT(*) FROM table 在 InnoDB 引擎中比 MyISAM引擎中的速度慢
统计一张表的总数量,是我们开发中常有的业务需求,通常情况下,我们都是使用 select count(*) from table SQL 语句来完成。随着业务数据的增加,你会发现这条语句执行的速度越来越慢,为什么它会变慢呢? 为什…...
Redis 命令和Redis key键
Redis 命令 Redis 命令用于在 Redis 服务器上执行一些操作,而命令运行的方式是通过客户端命令行来执行的,这种方式也被称为“命令行模式”。因此想要在 Redis 服务器上运行命令,您首先需要开启一个 Redis 客户端。操作方法如下: …...
如何入侵服务器
根据中华人民共和国刑法: 第二百八十六条违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役;后果特别严重的ÿ…...
在Windows10上安装虚拟机---VMware 17 Pro下载与安装
在Windows10上安装虚拟机---VMware下载与安装0 前言1 下载VMware 17 pro2 安装VMware 17 Pro3. 打开Vmware0 前言 电脑原生系统:Windows10虚拟机软件:VMware 17 pro准备好安装虚拟机的文件夹路径 1 下载VMware 17 pro 下载网址:VMware 官网…...
生命周期函数、组件
1. 生命周期函数 beforeCreate : 无法通过 vm 访问data 中的数据、methods 中的方法created :可以访问 vm 中的 data 的数据, methods 中的方法beforeMount:为经 Vue 编译的 dommounted:经过 vue 编译的 dom &#x…...
蓝桥杯 stm32 PWM 测量频率
本文代码使用 HAL 库。 文章目录 前言一、PWM 原理图:二、CubeMX 创建工程:三、PWM 单路测频:四、详细代码:1. 获取 CNT函数。2. 设置CNT为 0 函数3. 开启TIM2_CH1的输入捕获中断函数4. TIM 回调函数5. 在 LCD 上显示 R40 和 R39 的频率。总结前言 一、PWM 原理图: 参考…...
ExplorerPatcher终极指南:快速打造你的专属Windows工作界面
ExplorerPatcher终极指南:快速打造你的专属Windows工作界面 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher 厌倦了Windows 11强制性…...
如何轻松实现Windows风扇智能控制:5个关键技巧打造完美散热系统
如何轻松实现Windows风扇智能控制:5个关键技巧打造完美散热系统 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Tr…...
微信单向好友检测实战:3步智能发现谁悄悄删除了你
微信单向好友检测实战:3步智能发现谁悄悄删除了你 【免费下载链接】WechatRealFriends 微信好友关系一键检测,基于微信ipad协议,看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriends 你…...
OpenClaw Mattermost插件:为团队协作平台注入AI智能的轻量集成方案
1. 项目概述:为团队协作平台注入AI灵魂如果你所在的技术团队正在使用 Mattermost 这类自托管、注重数据隐私的团队协作工具,同时又希望引入一个能处理工单、回答疑问、甚至自动执行任务的智能助手,那么你很可能已经厌倦了那些需要复杂 API 调…...
Chopstick工具:高效管理多Git仓库的批量操作与自动化实践
1. 项目概述与核心价值 最近在GitHub上看到一个挺有意思的项目,叫 chopstick ,作者是DustinMeyer1010。光看名字你可能会联想到筷子,但它的实际功能跟餐具可没半点关系。这是一个专门用于 代码仓库(Repository)克隆…...
5G上行免调度传输:开启无线通信新篇章
5G上行免调度传输:开启无线通信新篇章 在无线通信技术不断演进的浪潮中,5G以其高速率、低时延和大连接等特性,成为推动社会数字化转型的关键力量。其中,上行免调度传输作为5G技术体系中的一个重要环节,正逐步展现出其独…...
HelmWave实战:声明式编排Kubernetes多Chart部署与GitOps集成
1. 项目概述:HelmWave,一个被低估的Helm编排利器如果你和我一样,长期在Kubernetes环境中管理着几十甚至上百个Helm Chart,那你一定对“Helm依赖地狱”和“多环境部署同步”这两个词深有感触。每次更新,手动执行一堆hel…...
2026年,性价比超高的直播代运营供应商究竟哪家强?
在直播电商行业持续火爆的当下,众多品牌都希望借助直播代运营服务来提升销售业绩和品牌影响力。然而,市场上直播代运营供应商众多,质量参差不齐,如何选择一家性价比超高的供应商成为了品牌方的一大难题。今天,就为大家…...
Ascend NPU高效无损压缩技术解析与优化
1. 项目概述:Ascend NPU上的高效无损压缩技术在AI模型规模爆炸式增长的今天,模型权重的存储与传输已成为系统瓶颈。以Qwen3-32B模型为例,其65.6GB的权重文件在分布式训练中会产生显著的通信开销。传统CPU/GPU压缩方案如ZipNN(1.5GB/s)和NV-Bi…...
微信单向好友终极检测指南:如何快速发现谁已悄悄删除或拉黑你
微信单向好友终极检测指南:如何快速发现谁已悄悄删除或拉黑你 【免费下载链接】WechatRealFriends 微信好友关系一键检测,基于微信ipad协议,看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFrie…...
