线程池遇到父子任务,有大坑,要注意!
老规矩还是先上个代码这个代码的逻辑非常简单首先我们搞了一个线程池然后起一个 for 循环往线程池里面仍了 5 个任务这是核心逻辑。对于这几个任务我们的这个自定义线程池处理起来不能说得心应手吧至少也是手拿把掐。其他的 StopWatch 是为了统计运行时间用的。 至于 CountDownLatch你可以理解为在业务流程中需要这五个任务都执行完成之后才能往下走所以我搞了一个 CountDownLatch。这个代码运行起来是没有任何问题的我们在日志中搜索“执行完成”也能搜到 5 个这个结果也能证明程序是正常结束的同时可以看到运行时间是 4s。示意图大概是这样的然后歪师傅看着这个代码发现了一个可以优化的地方这个地方从数据库捞出来的数据它们之间是没有依赖关系的也就是说它们之间也是可以并行执行的。所以歪师傅把代码改成了这样在异步线程里面去处理这部分从数据库中捞出来的数据并行处理加快响应速度。对应到图片大概就是这个意思把程序运行起来之后日志变成了这样我们搜索“执行完成”也能搜到 5 个对应输出。而且我们就拿“任务2”来说当前线程pool-1-thread-3,---【任务2】开始执行--- 当前线程pool-1-thread-3,---【任务2】执行完成--- 当前线程pool-1-thread-1,【任务2】开始处理数据1 当前线程pool-1-thread-2,【任务2】开始处理数据2从日志输出来看任务 2 需要处理的两个数据确实是在不同的异步线程中处理数据也实现了我的需求。但是程序运行直接就是到了 9.9ms这个优化这么牛逼的吗从 4s 到了 9.9ms稍加分析你会发现这里面是有问题的。那么问题就来了到底是啥问题呢你也分析分析大概是啥问题别老是想着直接找答案啊。问题就是由于转异步了所以 for 循环里面的任务中的 countDownLatch 很快就减到 0 了。于是 await 继续执行所以很快就输出了程序运行时间。然而实际上子任务还在继续执行程序并没有真正完成。9.9ms 只是任务提交到线程池的时间每个任务的数据处理时间还没算呢从日志输出上也可以看出在输出了 StopWatch 的日志后各个任务还在处理数据。这样时间就显得不够真实。那么我们应该怎么办呢很简单嘛需要子任务真正执行完成后父任务的 countDownLatch 才能进行 countDown 的动作。具体实现上就是给子任务再加一个 countDownLatch 栅栏我们希望的运行结果应该是这样的当前线程pool-1-thread-3,---【任务2】开始执行--- 当前线程pool-1-thread-1,【任务2】开始处理数据1 当前线程pool-1-thread-2,【任务2】开始处理数据2 当前线程pool-1-thread-3,---【任务2】执行完成---即子任务全部完成之后父任务才能算执行完成这样统计出来的时间才是准确的。思路清晰非常完美再次运行观察日志我们会发现

相关新闻

IDEA依赖冲突解决全攻略:5步定位+3招修复+1键清理,Maven Helper实战手册限时公开

IDEA依赖冲突解决全攻略:5步定位+3招修复+1键清理,Maven Helper实战手册限时公开

更多请点击: https://kaifayun.com 第一章:IDEA依赖冲突解决全攻略:5步定位3招修复1键清理,Maven Helper实战手册限时公开 依赖冲突是Java开发者日常开发中最易触发却最难精准定位的痛点之一。当项目启动报错 java.lang.NoSuchM…

2026/7/2 0:28:05阅读更多 →
MC74HC165A并行输入芯片在嵌入式系统中的应用与优化

MC74HC165A并行输入芯片在嵌入式系统中的应用与优化

1. 项目概述:用并行输入芯片简化复杂系统控制在嵌入式系统开发中,我们经常遇到一个经典矛盾:随着功能需求不断增加,微控制器的GPIO引脚数量很快捉襟见肘。特别是在工业控制、自动化测试等场景下,经常需要同时监测数十个…

2026/7/2 0:23:05阅读更多 →
Ubuntu 18.04下phpMyAdmin安全加固实战指南

Ubuntu 18.04下phpMyAdmin安全加固实战指南

1. 为什么在 Ubuntu 18.04 上部署 phpMyAdmin 不是“装完就跑”,而是安全运维的起点phpMyAdmin 这个名字,对任何接触过 LAMP(Linux-Apache-MySQL-PHP)栈的人而言,几乎等同于“数据库可视化操作面板”的代名词。它用纯 …

2026/7/2 0:23:05阅读更多 →
从WAIC看AI办公新趋势:会议助手正在从“记录工具”变成“组织智能体”

从WAIC看AI办公新趋势:会议助手正在从“记录工具”变成“组织智能体”

WAIC 2026 的主题是“智能伙伴,共创未来”。这一主题释放出一个清晰信号:AI办公正在从单点工具阶段,进入智能体协作阶段。对于企业、政府机关、军工单位、纪检监察、科研院所、医院和高校来说,AI会议助手不应只是录音转文字工具&a…

2026/7/2 2:58:37阅读更多 →
设备树编译后工程编译报错解决方法

设备树编译后工程编译报错解决方法

设备树编译后工程编译报错 正点原子第 7.1 节讲解编译设备树之后,再去编译工程时,可能会出现以下报错:解决办法:在设备树目录下,执行 make dtbs 之前先执行一次 make clean,即可解决。正点原子的视频和文档…

2026/7/2 2:58:37阅读更多 →
在线游戏反作弊技术:从原理到实战应用

在线游戏反作弊技术:从原理到实战应用

1. 在线多人游戏反作弊技术深度解析在竞技游戏领域,作弊行为如同附骨之疽,始终困扰着开发者和玩家。我曾参与多个大型在线游戏的防作弊系统设计,亲眼见证了这个没有硝烟的战场上攻防双方的激烈较量。作弊不仅破坏游戏平衡,更会直接…

2026/7/2 2:58:37阅读更多 →
view_source

view_source

🏷️标签:CTF、网络安全、攻防世界、Writeup、密码学、Web入门✅ 简介:本篇博文记录攻防世界新手区三道真实原题的完整解题过程,包含:view_source、base64、hello_world,覆盖 Web、Crypto、Misc 三大入门题…

2026/7/2 2:58:37阅读更多 →
如何快速掌握Markdown Viewer:新手的完整浏览器扩展指南

如何快速掌握Markdown Viewer:新手的完整浏览器扩展指南

如何快速掌握Markdown Viewer:新手的完整浏览器扩展指南 【免费下载链接】markdown-viewer Markdown Viewer / Browser Extension 项目地址: https://gitcode.com/gh_mirrors/ma/markdown-viewer Markdown Viewer是一款专为提升文档处理效率设计的浏览器扩展…

2026/7/2 2:58:37阅读更多 →
容器资源限制与配额管理实践

容器资源限制与配额管理实践

容器资源限制与配额管理实践随着容器化技术的普及,尤其是以Docker和Kubernetes为代表的平台成为云原生应用的基石,如何高效、安全地管理容器资源,确保应用性能与稳定性,同时提升基础设施利用率,已成为运维与开发团队面…

2026/7/2 2:53:37阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/7/1 4:42:14阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/7/1 5:19:01阅读更多 →
塞尔达传说旷野之息存档修改器:3分钟掌握海拉鲁世界自由定制技巧

塞尔达传说旷野之息存档修改器:3分钟掌握海拉鲁世界自由定制技巧

塞尔达传说旷野之息存档修改器:3分钟掌握海拉鲁世界自由定制技巧 【免费下载链接】BOTW-Save-Editor-GUI A Work in Progress Save Editor for BOTW 项目地址: https://gitcode.com/gh_mirrors/bo/BOTW-Save-Editor-GUI 想在《塞尔达传说:旷野之息…

2026/7/2 0:03:01阅读更多 →
告别 AccessKey:多云平台 CLI OAuth 免密认证完全指南

告别 AccessKey:多云平台 CLI OAuth 免密认证完全指南

在本地开发环境使用云厂商 CLI 时,传统的 AccessKey(AK)方式需要手动创建、下载和保管密钥,不仅繁琐,还存在泄漏风险。其实,主流云平台都已提供基于 OAuth 2.0 的免密认证方案,让开发者可以通过浏览器登录一次性完成授权,CLI 自动管理临时凭证的刷新,兼顾了便利与安全…

2026/7/2 0:03:01阅读更多 →
基于13DOF传感器与PIC32MZ的高精度嵌入式导航系统设计

基于13DOF传感器与PIC32MZ的高精度嵌入式导航系统设计

1. 项目背景与核心价值在嵌入式系统开发领域,高精度定位与导航一直是极具挑战性的技术方向。传统方案往往面临成本、精度和实时性难以兼顾的困境。这个项目通过13DOF(13自由度)传感器组合与PIC32MZ2048EFH100高性能MCU的协同工作,…

2026/7/2 0:03:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/2 0:33:58阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/2 1:32:11阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/2 1:50:13阅读更多 →