线程池不香了? 结构化并发才是王道!

图片

我们先定义获取用户信息任务:

图片

再定义获取订单信息任务:

图片

然后再构造线程池并执行任务:

图片

输出结果为:

图片

看上去一切都刚刚好,但是,如果获取订单信息时出错了,此时会是什么现象呢?修改获取订单任务代码:

图片

图片

给大家5秒钟思考一下....

我们直接运行代码看结果:

图片

图片

我们先看一段结构化并发的Demo代码:

图片

图片

图片

获取用户信息任务为(执行3秒):

图片

此时运行代码,应该两个子任务都不会抛异常,所以都能正常的执行,得到的结果为:

图片

如果把ShutdownOnFailure替换为ShutdownOnSuccess,大家猜一下会是什么情况?

因为获取订单信息任务只需要执行1秒就成功了,所以当获取订单信息任务执行完后,整个StructuredTask就执行结束了,所以获取用户信息任务就不会执行了(只执行了开头,相当于任务中止了),输出结果为:

图片

从中可以看出,ShutdownOnFailure和ShutdownOnSuccess就是结构化并发的精髓,那为什么叫结构化并发呢?

我个人的理解是通过结构化并发,可以将多个并发子任务组合成一个大任务,并且这个大任务可以控制子任务的执行进度,就算子任务已经开始执行了也可以被中止。

好了,你是怎么理解结构化并发的呢?说说你的理解。

最后说一句(求关注!别白嫖!)

如果这篇文章对您有所帮助,或者有所启发的话,求一键三连:点赞、转发、在看。

关注公众号:woniuxgg,在公众号中回复:笔记  就可以获得蜗牛为你精心准备的java实战语雀笔记,回复面试、开发手册、有超赞的粉丝福利!

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

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

相关文章

外包干了一周,技术明显倒退。。。。。

先说一下自己的情况,本科生,2019年我通过校招踏入了南京一家软件公司,开始了我的职业生涯。那时的我,满怀热血和憧憬,期待着在这个行业中闯出一片天地。然而,随着时间的推移,我发现自己逐渐陷入…

BUUCTF-Misc2

wireshark1 1.打开附件 发现是流量包,放到Wireshark中分析 2.过滤 根据题目的提示寻找管理员登录的网站,从中获取密码 用http.request.methodPOST,过滤当前的 HTTP 请求为 POST 方法 3.查找 双击过滤后的流量包,查找管理员密码…

TCP/IP模型中网络层和网络接口层的区别 通俗解释

问题 TCP/IP模型中的网络层和网络接口层有什么区别,或者说 ip地址和mac地址有什么区别,通过ip不就能找到要发送的设备了吗 为什么还需要mac地址用简单的语言来解释一下。 TCP/IP模型中的网络层和网络接口层主要的区别在于它们处理的信息和功能不同&…

Self-evolve——基于大语言模型的代码演进框架

导语 本研究提出了一个名为Self-evolve的框架,它旨在通过大型语言模型(LLMs)实现代码生成的进化。这一框架在Text-to-Code任务中引入了一种全新的处理流程,以提高LLMs在代码生成方面的效率和准确性。在之前,尽管LLMs在…

2024【问题解决】Github 2024无法克隆git clone自从签了2F2安全协议之后

项目场景:ping通Github但没法clone–502 问题描述 提示:ping通Github但没法clone--502: 例如:git clone https://gitclone.com/l.git/*** $ git clone https://github.com/darrenpig/Yocto Cloning into Yocto_tutorial... fatal: unable to access https://gitclone.co…

从仓储管理看3C电子行业智慧物流的优势

仓储管理是智慧物流的重要组成部分。通过引入自动化、智能化的仓储管理系统,3C电子企业可以实现库存的精准管理、快速分拣和高效配送。这不仅减少了库存成本,还大大提高了运营效率和市场响应速度。 传统的仓储管理依赖于人工操作和纸质文档记录&#xff…

vcomp140.dll丢失如何修复,5种修复方法轻松搞定vcomp140.dll问题

vcomp140.dll文件的丢失可能会引发一系列系统运行与软件功能上的问题。具体来说,这个动态链接库文件是Visual C Redistributable的一部分,对于许多基于此环境开发的应用程序至关重要。一旦缺失,可能会导致部分应用程序无法正常启动或运行&…

【问题解决】| ControlNet训练为什么这么慢???关于模型量与显卡资源认知关系的建立

我觉得做深度学习相关的开发,要深刻认识到自己的显卡资源有多少,以及对应能做一些什么研究 比如今天的我就对这部分认识不深,终归还是实践代码少~缺乏经验 我觉得之后要多跑代码,多跑工程项目啊。 我今天做了一件什么事情 我企…

Truenas入门级教程

Truenas入门教程 前言:系统相关配置 采用I3 4160,采用了2块500G的硬盘,内存为8G,两个网卡只用了其中一个,系统安装的是core版本 硬件采用DELL3020MT机箱,自带3个SATA网口,后期网口不够&#…

基于cnn卷积神经网络的车辆颜色检测识别-图像去雾-图像去雨(改进yolo目标检测-附代码)

– 引言: 开篇简述图像处理在智能交通监控、自动驾驶等领域的关键作用,并强调随着深度学习尤其是卷积神经网络(CNN)的发展,在复杂环境下的车辆颜色精确识别、图像恢复(如去雾和去雨)等难题得以…

力扣题库第4题:移动零

题目内容: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 : 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 答案&…

【Linux】Linux原生异步IO(一):libaio-介绍

1、IO模型 1.1 简述 相信大家在搜索的时候,都会看到下面这张图,IO的使用场景:同步、异步、阻塞、非阻塞,可以组合成四种情况: 同步阻塞I/O: 用户进程进行I/O操作,一直阻塞到I/O操作完成为止。同步非阻塞I/O: 用户程序可以通过设置文件描述符的属性O_NONBLOCK,I/O操作可…

HTML超详细简介

HTML是什么 超文本标记语言(HyperText Mark-up Language )用来设计网页的标记语言用该语言编写的文件,以 .html或 .htm为后缀由浏览器解释执行不区分大小写,建议小写 HTML标签 HTML用于描述功能的符号成为“标签”标签都封装在…

docker 部署prometheus+grafana

首先进行部署docker 配置阿里云依赖: curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo # 配置centos 7的镜像源 yum install -y yum-utils device-mapper-persistent-data lvm2 # 安装一些后期或需要的的一下依…

142.乐理基础-音程的构唱练习

内容参考于:三分钟音乐社 上一个内容:141.乐理基础-男声女声音域、模唱、记谱与实际音高等若干问题说明-CSDN博客 本次内容最好去看视频: https://apphq3npvwg1926.h5.xiaoeknow.com/p/course/column/p_5fdc7b16e4b0231ba88d94f4?l_progra…

python数据分析numpy基础之cumprod求数组累计积

1 python数据分析numpy基础之cumprod求数组累计积 python的numpy库的cumprod()函数,用于获取数组沿指定轴每个位置的累计积(cumulative product)。 本文的累计积是指第1个数到第n个数的积。比如数组a[a1,a2,a3,a4,a5],那么第1个数的累计积为a1&#xf…

2024年6个最佳WordPress游戏化插件

在寻找最好的WordPress游戏化插件来提高网站的参与度? WordPress游戏化是将游戏元素应用到WordPress 网站的想法,例如得分、排行榜、奖项、测验结果共享等。 显然,WordPress 的核心并不包含这些类型的功能。借助WordPress游戏化插件&#x…

Selenium自动化测试-3.元素定位(2)

我们发现网站并没有id、name等属性。那么,我们可以用更高级的定位方法——xpath来定位元素。 什么是xpath? xpath是一种在XML文档中定位元素的语言。因为HTML可以看做XML的一种实现,所以selenium用户可以使用这种强大语言在web应用中定位元素&#xf…

Java定时调度:Timer类和TimerTask类

Java提供了多种方式来执行定时任务,其中使用Timer类和TimerTask类是一种简单而有效的方法。这篇教程将介绍如何使用Java的Timer类和TimerTask类来实现定时调度。 1. Timer类 Timer类用于安排指定的任务按指定的时间执行。它可以执行一次性任务,也可以按…

计算机网络面经-拥塞控制的乘法减小和加法增大

先说结论: “乘法减小”:无论是在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞,就把慢开始门限ssthresh设置为出现拥塞时的发送窗口大小的一半,并执行慢开始算法 “加法增大”是指执行拥塞避免算法后&am…