java重点学习-线程池

news2024/11/15 13:58:11

十 线程池

10.1 说一下线程池的核心参数,线程池的执行原理

为什么使用线程池

  • 创建线程占用内存空间,每次创建的话会浪费内存
  • cpu有限,大量线程会导致cpu切换

10.2 线程池中有哪些常见的阻塞队列

workQueue-当没有空闲核心线程时,新来任务会加入到此队列排队,队列满会创建救急线程执行任务

  • 1.ArrayBlockingQueue:基于数组结构的有界阻塞队列,FIFO。优先使用初始化设置值
  • 2.LinkedBlockingQueue:基于链表结构的有界阻塞队列,FIFO。
  • 3.DelayedWorkQueue:是一个优先级队列,它可以保证每次出队的任务都是当前队列中执行时间最靠前的
  • 4.SynchronousQueue:不存储元素的阻塞队列,每个插入操作都必须等待一个移出操作。

ArrayBlockingQueue<Runnable> queue = new ArrayBlockingQueue<>( capacity: 2);

LinkedBlockingQueue linkedBlockingQueue = new LinkedBlockingQueue(),

10.3 如何确定核心线程数

  • 高并发、任务执行时间短 >(CPU核数+1),减少线程上下文的切换
  • 并发不高、任务执行时间长
    • I0密集型的任务 >(CPU核数*2+1)
    • 计算密集型任务 →(CPU核数+1)
  • 并发高、业务执行时间长,解决这种类型任务的关键不在于线程池而在于整体架构的设计,看看这些业务里面某些数据是否能做缓存是第一步,增加服务器是第二步,至于线程池的设置,设置参考(2)

10.4 线程池的种类有哪些

  • newFixedThreadPool:创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待
  • newsingleThreadExecutor:创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO)执行
  • newCachedThreadPool:创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程
  • newScheduledThreadPool:可以执行延迟任务的线程池,支持定时及周期性任务执行

10.5 为什么不建议用Executors创建线程池

10.6 线程池的使用场景

你们项目哪里用到了多线程

  • 批量导入:使用了线程池+CountDownLatch批量把数据库中的数据导入到了ES(任意)中,避免OOM
  • 数据汇总:调用多个接口来汇总数据,如果所有接口(或部分接口)的没有依赖关系,就可以使用线程池+future来提升性能
  • 异步线程(线程池):为了避免下一级方法影响上一级方法(性能考虑),可使用异步线程调用下一个方法(不需要下一级方法返回值),可以提升方法响应时间

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

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

相关文章

[产品管理-14]:NPDP新产品开发 - 12 - 产品创新流程 - 创新章程与通用流程

目录 前言&#xff1a; 一、什 么 是 产 品 创 新 流 程 &#xff1f; 1.1 概述 1.2 管 理 创 新 产 品 失 败 的 2个风 险 &#xff1a; 不 确 定 性 和 成 本 1、不确定性风险 2、成本风险 1.3 重点关注创新产品的起点的正确性&#xff1a;正确的事 二、产品创造章程…

Day10-作业讲解,Ingress规则编写及Jenkins集成K8S项目实战案例

Day10-作业讲解&#xff0c;Ingress规则编写及Jenkins集成K8S项目实战案例 1、作业:1.1 作业分析:1.2 复刻镜像1.3 将游戏镜像上K8S集群1.4 helm部署服务1.5 ingress规则编写 2、项目1-jenkins和k8s集成2.1 Jenkins实现k8s持续集成项目流程图解2.2 Jenkins集成K8S-将代码推送到…

Cmake之3.27版本重要特性及用法实例(二十二)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

解锁NXP i.MX93 DDR精准校正,极限压力测试

在前一篇关于NXP i.MX93开板流程的文章中&#xff0c;我们已经详细说明了目标板&#xff08;Target Board&#xff09;在打件完成后需要注意的事项。接下来的步骤是进行DRAM的时序校正及压力测试。 在i.MX8及之前的系列中&#xff0c; DDR压力测试是使用DDR Stress Test Tool&…

Python绘制论文图

Python Graph Gallery Python Boxplot Gallery | Dozens of examples with code

记录一下,Vcenter清理/storage/archive空间

一、根因 vpostgres&#xff1a;这个目录可能包含与 vCenter Server 使用的 PostgreSQL 数据库相关的归档文件过多&#xff0c;导致空间被占用。 二、处理过程 1、SSH登陆到Vcenter. 2、df -Th **图中可以看到 /storage/archive 使用占比很高。 /storage/archive 目录通常用…

光耦选型 | 光伏逆变器使用光耦型号推荐——KL101X系列

光伏逆变器是太阳能光伏发电系统中的关键设备之一&#xff0c;主要用于将光伏电池板产生的直流电转换为交流电&#xff0c;以供电网使用或者直接驱动交流电负载。在光伏逆变器中&#xff0c;光耦扮演着重要的角色&#xff0c;主要应用在以下几个方面&#xff1a; 隔离保护&…

前端基本功——面试必问系列(1):都2024了,还没吃透Promise?一文搞懂

写在前面&#xff1a; 大家好&#xff0c;我是山里看瓜&#xff0c;该系列文章是为了帮助大家不管面试还是开发对前端的一些基本但是很重要的知识点认识更加深入和全面。 想写这个系列文章的初衷是&#xff1a;我发现前端的很多基本知识&#xff0c;使用起来很简单&#xff0…

等保测评后:企业如何持续优化信息安全

通过信息安全等级保护&#xff08;等保&#xff09;测评&#xff0c;标志着企业达到了国家规定的安全标准&#xff0c;但这并非终点。在等保测评后&#xff0c;企业需要持续优化信息安全&#xff0c;保持和提升信息安全的防护水平&#xff0c;确保业务的稳定运行和数据的安全。…

一文搞定裸纤、以太网、SDH、MSTP、PTN、波分、OTN的区别!!!

目录 一、前奏 二、SDH 三、MSTP 四、波分 五、OTN 六、以太网 七、PTN 八、裸纤 一、前奏 SDH、WDM、OTN、Ethernet等到底有啥区别&#xff0c;接下来会按照自己的思路梳理一遍。 在介绍之前我觉得有几个点是需要记在脑海里带着这些词条去阅读的&#xff0c;列举如下…

【图像识别】摄像头捕捉运动到静止视频帧(免费源码分享)

【图像识别】摄像头捕捉运动到静止视频帧(免费源码分享) 1. 本文摘要 本文实现了一个OpenCV和PyQT5 结合的摄像头视频捕捉和运动检测线程&#xff0c;实现了一款界面软件用于功能演示。主要使用帧差法实现&#xff0c;摄像头捕捉运动到静止的图片&#xff0c;捕捉到的图片可用…

JavaScript高级——变量提升和函数提升

1、变量声明提升 —— 通过 var 定义&#xff08;声明&#xff09;的变量&#xff0c;在定义语句之前就可以访问到 —— 值&#xff1a;undefined 2、函数声明提升 —— 通过 function 声明的函数&#xff0c;在之前就可以直接调用 —— 值&#xff1a;函数定义&#xff0…

在 Mac 上安装虚拟机怎么样,安装虚拟机与直接安装 Windows 系统有区别吗?

随着跨系统操作的不断发展&#xff0c;虚拟机技术在生产力领域扮演着越来越重要的角色。Mac作为一款主流的操作系统&#xff0c;也有着运行虚拟机的能力。接下来给大家介绍Mac装虚拟机好不好&#xff0c;Mac装虚拟机和装Windows系统一样吗的具体内容。 Mac装虚拟机好不好 Mac…

java程序员入行科目一之CRUD轻松入门教程(四)

三层架构 所谓的三层&#xff1a; DAO层 也可以叫做Mapper或者是Repository层&#xff0c;名字无所谓&#xff0c;但是要清楚这层就是专门和数据库做交互的&#xff0c;一般指的是关系型数据库 Service层 数据的加工处理&#xff0c;调动DAO层去完成一些具体的业务实现&#xf…

【浅谈】单片机基本概念

这里写目录标题 一 引言二 存储器1 ROM&#xff08;read only memory&#xff09;2 RAM (random access memory)3 累加器&#xff08;ACC : accumulator&#xff09; 三 I/O口四 堆栈五 定时/计数器六 中断1、一些中断词汇&#xff1a;2 中断的响应过程&#xff1a;3 作用&…

提示词工程与 AI 使用的紧密关系

随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;特别是生成式模型&#xff08;如 GPT 系列模型&#xff09;的广泛应用&#xff0c;提示词工程&#xff08;Prompt Engineering&#xff09;成为了 AI 使用中至关重要的环节。提示词工程是指通过精心设计和优化…

踩最深的坑,教会自己出海的前端选型

目录 引言 1. 前端 1.1 Next.js 1.2 Remix 1.3 Nuxt 2. 样式与UI库 2.1 Tailwind CSS 2.2 NextUI 2.3 Framer Motion 2.4 Shadcn/UI 引言 在经历了刻骨铭心的合伙创业经历后&#xff0c;我意识到是时候该独立出海了。 捡起早已深埋在心里的创业想法&#xff0c;开始…

Unity2D游戏入门

1.导入资源 在Assets下新建文件夹 Res&#xff0c;将相关素材拖入其中&#xff08;本文中的素材仅为学习使用&#xff09;。 2.菜单 设置页面大小 选择素材&#xff0c;查看素材大小。 设置游戏视图大小。 调整工作布局方便查看 记得给场景改名为MenuScene&#xff0c;与其他…

HTTPS安全吗?3个理由告诉你HTTPS为什么是安全的!

从保护银行网站到在线购物期间保护数据&#xff0c;HTTPS协议在互联网上随处可见。例如当您访问racent.com时&#xff0c;你会发现你是通过安全加密链接来访问网站的。这种安全链接会触发浏览器的网址栏旁边显示安全挂锁图标。 但HTTPS真的安全吗? 如果你想快速得到答案&…