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

线程池的一些问题

核心线程数1.最大线程5.队列5.存活时间10s

1.场景一

如果核心线程数.被一直占用得不到释放.新进来1个任务.会怎么样?

答: 会在队列中中死等. 只要进来的任务.不超过队列的长度,就会一直挡在队列中死等


package com.lin;import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.LinkedBlockingQueue;/*** @author lin*/
public class ThreadPoolExample {public static void main(String[] args) {// 创建线程池ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1,                        // 核心线程数5,                        // 最大线程数1,                        // 空闲线程存活时间TimeUnit.MINUTES,         // 存活时间的单位new LinkedBlockingQueue<Runnable>(6)  // 任务队列);// 提交第一个永不释放的任务给线程池threadPoolExecutor.execute(() -> {try {System.out.println("Task 1 is running and will never complete");while (true) {// 模拟一个永不释放的任务Thread.sleep(1000);}} catch (InterruptedException e) {System.out.println("Task 1 was interrupted");Thread.currentThread().interrupt();}});// 等待一段时间然后提交第二个任务try {System.out.println("等待2秒");Thread.sleep(2000); // 等待2秒,确保第一个任务已开始执行} catch (InterruptedException e) {e.printStackTrace();}for (int i = 0; i < 6; i++) {   //模拟任务数量int finalI = i;threadPoolExecutor.execute(() -> {try {System.out.println("Task "+ finalI +"is running");Thread.sleep(1000); // 模拟任务运行System.out.println("Task "+ finalI +"is completed");} catch (InterruptedException e) {e.printStackTrace();}});}// 打印线程池状态new Thread(() -> {while (true) {try {System.out.println("Active Threads: " + threadPoolExecutor.getActiveCount());System.out.println("Pool Size: " + threadPoolExecutor.getPoolSize());System.out.println("Queue Size: " + threadPoolExecutor.getQueue().size());Thread.sleep(5000); // 每5秒打印一次线程池状态} catch (InterruptedException e) {Thread.currentThread().interrupt();break;}}}).start();// 等待足够的时间观察线程池状态//try {//    Thread.sleep(60000); // 主线程等待60秒//} catch (InterruptedException e) {//    e.printStackTrace();//}// 关闭线程池//threadPoolExecutor.shutdownNow();//try {//    // 等待所有任务完成//    if (!threadPoolExecutor.awaitTermination(60, TimeUnit.SECONDS)) {//        threadPoolExecutor.shutdownNow();//    }//} catch (InterruptedException e) {//    threadPoolExecutor.shutdownNow();//}}
}

在这里插入图片描述

2.场景二

如果核心线程数,一直被占用.来了6个任务.效果会怎么样

答: 这是任务总数超过了队列的长度.线程池会创建新的线程来处理这个任务.根据队列的不同.消费任务的顺序不一样.以LinkedBlockingQueue.1,2,3,4,5添加到队列中.第6个任务来了.会创建线程先消费. 然后再又这个线程来处理1,2,3,4,5来处理.

然后处理完.空闲线程等待存活时间.然后被回收.线程池恢复到最开始的时候.

在这里插入图片描述
在这里插入图片描述

3.场景三

如果核心线程数和最大线程数的其他线程同时空置了,最大线程数的其他线程还没有被回收.现在队列中的任务,会被那个消费

答: 会优先被核心线程先消费

相关文章:

线程池的一些问题

核心线程数1.最大线程5.队列5.存活时间10s 1.场景一 如果核心线程数.被一直占用得不到释放.新进来1个任务.会怎么样?答: 会在队列中中死等. 只要进来的任务.不超过队列的长度,就会一直挡在队列中死等 package com.lin;import java.util.concurrent.Executors; import java.u…...

企业或者个体户为什么会经营异常?

在复杂多变的市场经济环境中&#xff0c;无论是企业还是个体工商户&#xff0c;都可能遭遇经营异常的情况。及时识别这些预警信号并采取有效措施&#xff0c;对于避免潜在风险、保持健康发展至关重要。本文将深入探讨企业与个体户常见的经营异常类型、识别方法以及应对策略&…...

ROS从入门到精通4-3:制作Docker镜像文件Dockerfile

目录 0 专栏介绍1 为什么需要Dockerfile&#xff1f;2 Dockerfile书写原则3 Dockerfile常用指令3.1 FROM3.2 MAINTAINER3.3 RUN3.4 ADD3.5 COPY3.6 CMD3.7 ENV3.8 EXPOSE3.9 WORKDIR3.10 ARG 4 Dockerfile构建ROS工程实例 0 专栏介绍 本专栏旨在通过对ROS的系统学习&#xff0…...

【CV】计算机视觉是什么?

计算机视觉是一门研究如何使机器“看”的学科&#xff0c;旨在实现从图像或视频中获取信息的技术和方法。它涵盖了图像处理、模式识别、机器学习等多个领域&#xff0c;是人工智能领域的重要分支之一。以下是计算机视觉的一般概要介绍&#xff1a; 概要介绍&#xff1a; 图像…...

如何在Vue中实现鼠标悬浮展示与隐藏弹窗的功能

如果你需要鼠标在元素和弹窗上时保持弹窗显示&#xff0c;而鼠标离开这两者时隐藏弹窗&#xff0c;你可以使用一个稍微复杂的逻辑来处理鼠标的进入和离开事件。 这通常涉及到延时关闭弹窗&#xff0c;以便给用户足够的时间从元素移动到弹窗上&#xff0c;而不触发弹窗关闭。以…...

03 Linux编程-进程

1、进程的相关概念 1.1 程序与进程 程序是静态的概念&#xff0c;进程是程序的一次运行活动。 1.2 查看系统中有哪些进程 ps #只显示一小部分进程 ps -aux #会打印当前所有进程 ps -aux|grep init #使用grep筛选出只含有init的进程top #运行显示的进程有点类似windows…...

Hbuild-X运行ios基座app

一、说明 ios真机第一次运行的时候需要下载插件&#xff0c;这个都是自动监测&#xff0c;自动下载的&#xff0c;不用多说。ios真机运行是需要签名的&#xff0c;不然就会报以下错误。如何制作免费的签名证书呢&#xff0c;需要借助爱思助手来完成。 二、安装爱思助手 &…...

Node.js基础:从入门到实战

初识 Node.js 与内置模块 &#xff08;初识&#xff09; 1、知道什么是node.js 2、知道node.js可以做什么 3、node.js 中js的组成部分 &#xff08;内置模块&#xff09; 4、用 fs 模块读写操作文件 5、使用 path 模块处理路径 6、使用http 模块写一个基本的web服务器 初识 N…...

考研408笔记总结~

目录 一.数据结构 二.计算机组成原理 三.操作系统 四.计算机网络 私以为边看视频&#xff0c;边做笔记会更专注些&#xff0c;大家需要自取。欢迎大家和我一起探讨考研的问题&#xff0c;包括不仅限于专业课&#xff0c;数学&#xff0c;英语等等......&#xff0c;想说什么…...

使用在线工具等方式下载推特视频

使用在线工具等方式下载推特视频 使用在线工具 Visit a Twitter video downloader website: Websites like twdown.net, twittervideodownloader.com, and savevideo.me offer services to download Twitter videos.Paste the Twitter video URL into the designated input bo…...

性能优化:几方面考虑

我们可以继续再考虑下关于性能优化&#xff0c;我们还能从哪些方面着手呢&#xff1f; 1. 代码层面&#xff1a; 使用更高效的数据结构和算法。使用缓存避免多次数据库交互减少不必要的计算和内存分配。利用并行和异步编程提高性能。使用性能分析工具定位和优化瓶颈。 2. We…...

学习大数据:论学习Spark的重要性

随着科技的不断发展&#xff0c;大数据已经成为了当今社会的热门话题。大数据技术的出现&#xff0c;为我们提供了处理海量数据的新方法&#xff0c;使得我们能够从这些数据中挖掘出有价值的信息。在众多的大数据处理框架中&#xff0c;Apache Spark无疑是最为出色的一种。本文…...

学习java第七十一天

DI&#xff1a;依赖注入 依赖注入是spring容器中创建对象时给其设置依赖对象的方式&#xff0c;比如给spring一个清单&#xff0c;清单中列出了需要创建B对象以及其他的一些对象&#xff08;可能包含了B类型中需要依赖对象&#xff09;&#xff0c;此时spring在创建B对象的时候…...

Altium Designer PCB快捷键设置

6&#xff09;PCB修改快捷键&#xff0c;并自定义工具栏 添加boardlayerset系统命令。 修改系统脚本&#xff0c; 在D:\Program Files\Altium\AD18\System下&#xff0c;找到advpcb.rcs文件&#xff0c;打开。 Tree MNPCB_LayerSets CaptionManage Layer Se&ts Popup Emp…...

玩转Matlab-Simscape(初级)- 08 - 基于Solidworks、Matlab Simulink、COMSOL的协同仿真(案例实战)

** 玩转Matlab-Simscape&#xff08;初级&#xff09;- 08 - 基于Solidworks、Matlab Simulink、COMSOL的协同仿真&#xff08;案例实战&#xff09; ** 目录 玩转Matlab-Simscape&#xff08;初级&#xff09;- 08 - 基于Solidworks、Matlab Simulink、COMSOL的协同仿真&…...

vue嵌套路由

一、嵌套 children配置 1.父类路由 mymusic 2.子类路由 musicson 1.创建MusicSon组件 <template><div><p>从前和后来</p><p>唯一</p><p>运气来的似有若无</p></div> </template><script>export defaul…...

视频降噪算法 hqdn3d 原理分析

视频降噪 视频降噪是一种处理技术&#xff0c;旨在减少视频中的噪声&#xff0c;提高画面质量。噪声可能来自多种源头&#xff0c;包括摄像机的传感器、压缩算法、传输过程中的干扰等。降噪处理对于视频监控、视频会议、电影后期制作以及任何需要高画质输出的应用场景都非常重…...

Ansys Mechanical|屈曲分析技术

屈曲分析的基本概念 当受拉杆件的应力达到屈服极限或强度极限时&#xff0c;将引起塑性变形或断裂。这些是由于强度不足所引起的失效。 在工程中&#xff0c;我们会注意到当细长杆件受压时&#xff0c;表现出与强度失效完全不同的性质。当杆件受压超过某一临界值时&#xff0…...

【大模型微调】一文掌握7种大模型微调的方法

本篇文章深入分析了大型模型微调的基本理念和多样化技术&#xff0c;细致介绍了LoRA、适配器调整(Adapter Tuning)、前缀调整(Prefix Tuning)等多个微调方法。详细讨论了每一种策略的基本原则、主要优点以及适宜应用场景&#xff0c;使得读者可以依据特定的应用要求和计算资源限…...

MySQL表突然卡死,删、查操作加载不停解决办法

今天遇到了MySQL删表的时候卡死情况。然后通过网上查阅资料和项目组沟通&#xff0c;了解到了有多人同时对同一张表进行了操作。我和另一个同事同时进行了删除操作&#xff0c;然后另两位同时进行了查询操作&#xff0c;然后还有一位同事用dolphin调度&#xff0c;用datax采集数…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解

文章目录 一、开启慢查询日志&#xff0c;定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...

用递归算法解锁「子集」问题 —— LeetCode 78题解析

文章目录 一、题目介绍二、递归思路详解&#xff1a;从决策树开始理解三、解法一&#xff1a;二叉决策树 DFS四、解法二&#xff1a;组合式回溯写法&#xff08;推荐&#xff09;五、解法对比 递归算法是编程中一种非常强大且常见的思想&#xff0c;它能够优雅地解决很多复杂的…...

统计学(第8版)——统计抽样学习笔记(考试用)

一、统计抽样的核心内容与问题 研究内容 从总体中科学抽取样本的方法利用样本数据推断总体特征&#xff08;均值、比率、总量&#xff09;控制抽样误差与非抽样误差 解决的核心问题 在成本约束下&#xff0c;用少量样本准确推断总体特征量化估计结果的可靠性&#xff08;置…...

spring boot使用HttpServletResponse实现sse后端流式输出消息

1.以前只是看过SSE的相关文章&#xff0c;没有具体实践&#xff0c;这次接入AI大模型使用到了流式输出&#xff0c;涉及到给前端流式返回&#xff0c;所以记录一下。 2.resp要设置为text/event-stream resp.setContentType("text/event-stream"); resp.setCharacter…...

Go爬虫开发学习记录

Go爬虫开发学习记录 基础篇&#xff1a;使用net/http库 Go的标准库net/http提供了完善的HTTP客户端功能&#xff0c;是构建爬虫的基石&#xff1a; package mainimport ("fmt""io""net/http" )func fetchPage(url string) string {// 创建自定…...