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

并发编程之线程池的应用以及一些小细节的详细解析

线程池在实际中的使用

实际开发中,最常用主要还是利用ThreadPoolExecutor自定义线程池,可以给出一些关键的参数来自定义。

在下面的代码中可以看到,该线程池的最大并行线程数是5,线程等候区(阻塞队列)是3,即该线程池最多接受8个线程任务的同时提交。

一旦超过了8这个任务数,就会抛出java.util.concurrent.RejectedExecutionException拒绝执行异常

任务数8,运行结果:

任务数9,运行结果:

源代码:

​
import java.util.concurrent.*;
​
/*** @author zkw* @Description 自定义线程池*/
public class CustomerThreadPool {public static void main(String[] args) {ExecutorService threadPool = new ThreadPoolExecutor(3,                                  //初始线程池并行数5,                              //线程池最大并行数2L,                                //空闲的线程允许空闲的时间TimeUnit.SECONDS,                               //上面参数的单位new LinkedBlockingQueue<Runnable>(3),   //设置等候队列长度,不设置的话会默认使用Integer的最大值Executors.defaultThreadFactory(),               //创建线程的工厂new ThreadPoolExecutor.AbortPolicy());          //拒绝策略
​try {for (int i = 0; i < 8; i++) {threadPool.execute(()->{System.out.println(Thread.currentThread().getName()+"\t正在服务");});}
​}catch (Exception e){e.printStackTrace();}finally {threadPool.shutdown();}}
}
​

线程池拒绝策略

AbortPolicy(默认):直接抛出RejectedExecutionException异常阻止系统正常运行

CallerRunsPolicy:“调用者运行”一种调节机制,该策略既不会抛弃任务,也不会抛出异常,而是将某些任务回退到调用者,

而降低新任务的流量。(比如是main线程提交的任务,就回退给main线程执行)

DiscardOldestPolicy:抛弃队列中等待最久的任务,然后把当前任务加人队列中尝试再次提交当前任务。

DiscardPolicy该策略默默地丢弃无法处理的任务,不予任何处理也不抛出异常。如果允许任务丢失,这是最好的一种策略。

线程池参数设置细节

如果任务都是cpu密集型,设置线程池大小的时候应该使用的是根据不同电脑的cpu核数来设置的动态的参数

获取cpu核数:

Runtime.getRuntime().availableProcessors()

       
 ExecutorService threadPool = new ThreadPoolExecutor(3,Runtime.getRuntime().availableProcessors(),  //根据不同cpu设置的动态线程池大小2L,                            TimeUnit.SECONDS,                     new LinkedBlockingQueue<Runnable>(3),  Executors.defaultThreadFactory(),         new ThreadPoolExecutor.AbortPolicy());       
​

(编程篇)函数式接口

这块知识主要是在看源代码的时候有用,jdk提供了四大常用的函数式接口

 

相关文章:

并发编程之线程池的应用以及一些小细节的详细解析

线程池在实际中的使用 实际开发中&#xff0c;最常用主要还是利用ThreadPoolExecutor自定义线程池&#xff0c;可以给出一些关键的参数来自定义。 在下面的代码中可以看到&#xff0c;该线程池的最大并行线程数是5&#xff0c;线程等候区&#xff08;阻塞队列)是3&#xff0c;即…...

基于JSP的农产品供销服务系统

背景 互联网的迅猛扩张彻底革新了全球各类组织的运营模式。自20世纪90年代起&#xff0c;中国的政府机关和各类企业便开始探索利用网络系统来处理管理事务。然而&#xff0c;早期的网络覆盖范围有限、用户接受度不高、互联网相关法律法规不完善以及技术开发不够成熟等因素&…...

redis之主从复制、哨兵模式

一 redis群集有三种模式 主从复制&#xff1a; 主从复制是高可用Redis的基础&#xff0c;哨兵和集群都是在主从复制基础上实现高可用的。 主从复制主要实现了数据的多机备份&#xff0c;以及对于读操作的负载均衡和简单的故障恢复。 缺陷&#xff1a; 故障恢复无法自动化&…...

【随笔】Git 基础篇 -- 分支与合并 git rebase(十)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…...

图像识别技术在体育领域的应用

图像识别技术在体育领域的应用是一个充满创新和挑战的研究方向。随着计算机视觉和人工智能技术的快速发展&#xff0c;图像识别技术已经在体育领域展现出广泛的应用潜力和实际价值。以下是一些图像识别技术在体育领域的具体应用&#xff1a; 运动员表现分析&#xff1a; 图像识…...

【项目新功能开发篇】开发编码

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过大学刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0…...

软件设计原则:开闭原则

定义 开闭原则&#xff08;Open-Closed Principle, OCP&#xff09;是面向对象设计的基本原则之一&#xff0c;由 Bertrand Meyer 提出。它指出软件实体&#xff08;类、模块、函数等&#xff09;应该对扩展开放&#xff0c;对修改封闭。这意味着软件应该设计成在不修改现有代…...

Python如何下载视频

大家好&#xff0c;今天我将为大家介绍如何使用Python来下载视频。Python作为一门强大的编程语言&#xff0c;不仅可以用于数据分析、机器学习等领域&#xff0c;还能用于网络爬虫和视频下载等任务。下面我将详细介绍如何使用Python来下载视频。 首先&#xff0c;我们需要明确…...

使用虚拟引擎为AR体验提供动力

Powering AR Experiences with Unreal Engine ​​​​​​​ 目录 1. 虚拟引擎概述 2. 虚拟引擎如何为AR体验提供动力 3. 虚拟引擎中AR体验的组成部分是什么&#xff1f; 4. 使用虚拟引擎创建AR体验 5. 虚拟引擎中AR的优化提示 6. 将互动性融入AR与虚拟引擎 7. 在AR中…...

Kafka入门到实战-第五弹

Kafka入门到实战 Kafka常见操作官网地址Kafka概述Kafka的基础操作更新计划 Kafka常见操作 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://kafka.apache.org/Kafka概述 Apache Kafka 是一个开源的分布式事件流平台&…...

Ideal Holidays

题目链接 AtCoder Beginner Contest 347 C - Ideal Holidays 思路&#xff1a; 一周有 A B AB AB 天&#xff0c;前 A A A 天放假&#xff0c;问能不能把所有工作放进节假日里。 先看简单的&#xff0c;两个。其实我们并不是很在乎它们中间隔了多少天&#xff0c;我们只…...

Raven:一款功能强大的CICD安全分析工具

关于Raven Raven是一款功能强大的CI/CD安全分析工具&#xff0c;该工具旨在帮助广大研究人员对GitHub Actions CI工作流执行大规模安全扫描&#xff0c;并将发现的数据解析并存储到Neo4j数据库中。 Raven&#xff0c;全称为Risk Analysis and Vulnerability Enumeration for C…...

【苹果MAC】苹果电脑 LOGI罗技鼠标设置左右切换全屏页面快捷键

首先键盘设置->键盘快捷键 调度中心 设置 f1 f2 为移动一个空间&#xff08;就可以快捷移动了&#xff09; 想要鼠标直接控制&#xff0c;就需要下载官方驱动&#xff0c;来设置按键快捷键&#xff0c;触发 F1 F2 安装 LOGI OPTIONS Logi Options 是一款功能强大且便于使用…...

IDE/VS2015和VS2017帮助文档MSDN安装和使用

文章目录 概述VS2015MSDN离线安装离线MSDN的下载离线MSDN安装 MSDN使用方法从VS内F1启动直接启动帮助程序跳转到了Qt的帮助网页 VS2017在线安装MSDN有些函数在本地MSDN没有帮助&#xff1f;切换中英文在线帮助文档 概述 本文主要介绍了VS集成开发环境中&#xff0c;帮助文档MS…...

开启 Keep-Alive 可能会导致http 请求偶发失败

大家好&#xff0c;我是蓝胖子&#xff0c;说起提高http的传输效率&#xff0c;很多人会开启http的Keep-Alive选项&#xff0c;这会http请求能够复用tcp连接&#xff0c;节省了握手的开销。但开启Keep-Alive真的没有问题吗&#xff1f;我们来细细分析下。 最大空闲时间造成请求…...

【leetcode面试经典150题】4.删除有序数组中的重复项 II(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…...

【LeetCode热题100】【普通数组】合并区间

题目链接&#xff1a;56. 合并区间 - 力扣&#xff08;LeetCode&#xff09; 先排序&#xff0c;按左区排序&#xff0c;装第一个区间进入答案容器&#xff0c;判断答案容器钟最后一个区间的右区是否小于区间的左区&#xff0c;是则不能合并是新区间&#xff0c;否则可以合并 …...

自我认识的方法模型图

在漫长的人生旅途中&#xff0c;我们都在不断地探索、追寻&#xff0c;努力寻找那个最真实、最完整的自我。因为只有真正了解自己&#xff0c;才能战胜内心的种种困惑与恐惧&#xff0c;进而战胜外在的一切挑战与困难。自我认识&#xff0c;是每个人成长的必经之路&#xff0c;…...

dhcp和dhcp中继代理

简单说就是各个pc机的ip自动获取&#xff0c;不用手动设置 配置思路 1.使能dhcp功能 2.创建全局地址池 ip pool &#xff0c;配置可用网络地址 network mask和网关地址刚刚忘记了&#xff0c;租约期 lease day hour 3.配置端口的网关地址&#xff08;各个网络地址的第二位…...

【fastadmin】脚本模式下,日志钩子函数执行出现死循环,导致内存溢出奔溃

问题出现原因是想对项目中error级别的日志&#xff0c;接入钉钉告警&#xff0c;方便查看 于是使用钩子方法&#xff0c;日志写入完成后&#xff0c;自动调用自定义的告警方法中 1、在application/tags.php 中添加log_write_done > [app\\common\\behavior\\Common, ],2、在…...

gitlab代码迁移,包含历史提交记录、标签、分支

1、克隆现有的GitLab仓库&#xff08;http://localhost:8888/aa/bb/cc.git&#xff09;到本地&#xff0c;包括所有分支和标签 git clone --bare http://localhost:8888/aa/bb/cc.git 2、在gitlab上创建一个空的仓库&#xff08;http://localhost:7777/aa/bb/cc.git&#xff…...

通过TCP或UDP向某个IP和端口发送数据

工具发送 如果您想要一个简单的方法来发送TCP或UDP数据&#xff0c;可以尝试使用nc&#xff08;netcat&#xff09;命令。这是一个功能强大的网络工具&#xff0c;可以用于读取和写入数据流。 发送TCP数据 在命令行中运行以下命令&#xff1a; echo "Hello, World\!&q…...

Go语言介绍及Go语言成功的项目列举

Go语言介绍&#xff1a; Go即 Golang &#xff0c;是 Google 公司 2009 年 11 月正式对外公开的一门编程语言。 根据 Go 语言开发者自述&#xff0c;近 10 多年&#xff0c;从单机时代的 C 语言到现在互联网时代的 Java &#xff0c; 都没有令人满意的开发语言&a…...

CQI-17:2021 V2 英文 、中文版。特殊过程:电子组装制造-锡焊系统评审标准

锡焊作为一个特殊的工艺过程&#xff0c;由于其材料特性的差异性、工艺参数的复杂性和过程控制的不确定性&#xff0c;长期以来一直视为汽车零部件制造业的薄弱环节&#xff0c;并将很大程度上直接导致整车产品质量的下降和召回风险的上升。 美国汽车工业行动集团AIAG的特别工…...

普通Java工程可执行JAR两种打包方式探讨

文章目录 一、需求概述二、代码结构三、运行结果四、打包设置1. 一体化可执行包2. 带外部依赖lib的可执行包 五、打包运行1. 源码放送2. 打包执行3. 打包结果 一、需求概述 普通Java工程 docker-show 实现了定时打印docker应用信息&#xff0c;现在需要将其打包成可执行Jar部署…...

开源博客项目Blog .NET Core源码学习(13:App.Hosting项目结构分析-1)

开源博客项目Blog的App.Hosting项目为MVC架构的&#xff0c;主要定义或保存博客网站前台内容显示页面及后台数据管理页面相关的控制器类、页面、js/css/images文件&#xff0c;页面使用基于layui的Razor页面&#xff08;最早学习本项目就是想学习layui的用法&#xff0c;不过最…...

Vue的双向绑定v-model详细介绍

使用&#xff1a; 比如用户在登录注册时需要提交账号密码&#xff1b; 比如用户创建&#xff0c;更新时&#xff0c;需要提交一些数据&#xff1b; v-model指令可以在表单 input、textarea以及select元素上创建双向绑定&#xff1b; 它会根据控件类型自动选取正确的方法来更…...

AWS入门实践-S3对象存储的基本用法

AWS S3(Simple Storage Service)是亚马逊云服务提供的一种高度可扩展、安全且经济高效的对象存储服务。它允许用户在任何位置存储和检索任意数量的数据,非常适合存储和分发静态文件、备份数据以及作为数据湖的存储层。 一、S3上传和下载文件&#xff08;AWS门户&#xff09; …...

el-tree-v2渲染树形大数据并设置默认展开

el-tree-v2无 el-tree中默认展开节点的属性&#xff0c;需要自行设置 default-expand-all是否默认展开所有节点 需求&#xff1a;首次默认展开全部节点 实现1尝试失败&#xff1a;增加设置了属性 :default-expand-keys"props.treeData.map(itemitem.id)"无效&…...

损失函数篇 | YOLOv8更换损失函数之MPDIoU(23年7月首发论文)

前言:Hello大家好,我是小哥谈。损失函数是机器学习中用来衡量模型预测值与真实值之间差异的函数。在训练模型时,我们希望通过不断调整模型参数,使得损失函数的值最小化,从而使得模型的预测值更加接近真实值。不同的损失函数适用于不同的问题,例如均方误差损失函数适用于回…...

东莞网页制作网站/如何做好一个营销方案

PS&#xff1a;谁有相关的照片&#xff0c;请发给我。...

文章类型网站/网站seo优化

&#xff08;1&#xff09;r分量更大&#xff0c;则为红色 &#xff08;2&#xff09;判断深浅&#xff1a; 亮度越亮&#xff0c;则颜色越浅。 if(r*0.299 g*0.578 b*0.114 > T){ //浅色... }else{ //深色... }...

网站开发公司属于什么行业/在线资源搜索引擎

版权声明&#xff1a;欢迎转载&#xff0c;请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/43447681 init 6 重启Linux。free -m查看内存大小&#xff0c;已M为单位。df -h查看硬盘情况&#xff0c;包括大小和分区。cat /proc/cpuinfo查看CPU信息。file…...

做非经营网站需要营业执照/广告公司简介

开篇 这篇文章主要对Tomcat 解析conf/server.xml文件进行了一下流程的分析&#xff0c;对比server.xml的配置文件和代码部分能够建立起一定的关联即可。 建议有兴趣研究的可以对照代码和server.xml配置文件&#xff0c;这样能够更好的理解。 配置解析流程 配置解析的整体步骤在…...

服务器网站301重定向怎么做/做百度推广销售怎么样

日常工作或学习中经常会接触很多PDF文档&#xff0c;有时其中有些图片是我们需要用到的&#xff0c;应该如何将这些图片从PDF文件中提取出来并且保存呢&#xff1f;我们可以用PDF编辑器来实现这个需求&#xff0c;首先用极速PDF编辑器打开我们需要处理的PDF文档后&#xff0c;通…...

wordpress手机版网页/网络营销都具有哪些功能

颜色、样式和阴影 fillStyle 设置或返回用于填充绘画的颜色、渐变或模式 strokeStyle 设置或返回用于笔触的颜色、渐变或模式 shadowColor 设置或返回用于阴影的颜色 shadowBlur 设置或返回用于阴影的模糊级别 shadowOffsetX 设置或返回阴影距形状的水平距离 shadowOffse…...