热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

把同步的代码块切成异步的方法之Taskexecutor

业务场景:比如你有个业务的方法里,需要处理一大堆逻辑,还要再调用一下另外一个系统的接口通知数据的变更,最后这个业务方法处理

业务场景:

比如你有个业务的方法里,需要处理一大堆逻辑,还要再调用一下另外一个系统的接口通知数据的变更,最后这个业务方法处理的数据还要入库,这时候,如果你把数据库的修改操作放到代码的中间,最后再调别人的接口,就会出现问题,如果别人的接口特别慢或者网络波动太大,就会导致你的数据没保存,但是事务一直开着。就是个大事务,拖累整个系统。

如下面的伪代码:

但是你要是把调用其他接口的代码放到上面,又会有另一个问题,比如你调人家接口都成功啦,但是你自己的业务逻辑没走通,比如校验失败了,那就是大bug了。

如下面的伪代码:

解决方案:

那么我们应该怎么做才能解决上面的问题呢?

如下面的伪代码:

上面的思路是在你的业务逻辑都走完了,改库操作也没有问题,这个时候单独起个线程去掉其他的接口。你的事务就结束了,也能保证调其他接口的时候数据的正确性。

知识补充:写个小demo验证下taskexecutor是否是开启一个线程,代码如下

如上图所示,taskExecutor的确会开启一个新的线程。

总结:

在实际开发的业务中,如果我们既需要自己往自己的数据库插入数据,又需要通知其他系统,这时候为了不耽误主业务的进行就可以通过上面的方法开启一个线程把同步方法切换成异步的代码块。我是阿达,一名喜欢分享知识的程序员,时不时的也会荒腔走板的聊一聊电影、电视剧、音乐、漫画,这里已经有17位小伙伴在等你们啦,感兴趣的就赶紧来点击关注我把,哪里有不明白或有不同观点的地方欢迎留言。


推荐阅读
  • 2021年度回顾与深度分析
    2021年度回顾与深度分析 ... [详细]
  • Python与R语言在功能和应用场景上各有优势。尽管R语言在统计分析和数据可视化方面具有更强的专业性,但Python作为一种通用编程语言,适用于更广泛的领域,包括Web开发、自动化脚本和机器学习等。对于初学者而言,Python的学习曲线更为平缓,上手更加容易。此外,Python拥有庞大的社区支持和丰富的第三方库,使其在实际应用中更具灵活性和扩展性。 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • 从无到有,构建个人专属的操作系统解决方案
    操作系统(OS)被誉为程序员的三大浪漫之一,常被比喻为计算机的灵魂、大脑、内核和基石,其重要性不言而喻。本文将详细介绍如何从零开始构建个人专属的操作系统解决方案,涵盖从需求分析到系统设计、开发与测试的全过程,帮助读者深入理解操作系统的本质与实现方法。 ... [详细]
  • Python作为当今IT领域中最受欢迎且高效的语言之一,其框架能够显著加速Web应用程序的开发过程。本文推荐并对比了十大顶级Python Web开发框架,其中CubicWeb以其卓越的代码重用性和模块化设计脱颖而出,为开发者提供了强大的支持。 ... [详细]
  • Spring框架入门指南:专为新手打造的详细学习笔记
    Spring框架是Java Web开发中广泛应用的轻量级应用框架,以其卓越的功能和出色的性能赢得了广大开发者的青睐。本文为初学者提供了详尽的学习指南,涵盖基础概念、核心组件及实际应用案例,帮助新手快速掌握Spring框架的核心技术与实践技巧。 ... [详细]
  • 从Google Jam落选后,意外收获了一颗“桔子”,重新整理行囊再出发 ... [详细]
  • 深入解析 ELF 文件格式与静态链接技术
    本文详细探讨了ELF文件格式及其在静态链接过程中的应用。在C/C++代码转化为可执行文件的过程中,需经过预处理、编译、汇编和链接等关键步骤。最终生成的可执行文件不仅包含系统可识别的机器码,还遵循了严格的文件结构规范,以确保其在操作系统中的正确加载和执行。 ... [详细]
  • 自定义包裹组件的HTML标签:实现商品数量动态增减功能 [Keep Coding]
    在本文中,我们将探讨如何通过自定义包裹组件的HTML标签来实现商品数量的动态增减功能。具体来说,我们将详细介绍如何利用React或Vue等前端框架,结合JavaScript和CSS,实现这一功能。文章将涵盖从基础的HTML结构搭建到事件处理和状态管理的全过程,帮助开发者快速掌握实现方法。此外,我们还将提供一些最佳实践和常见问题的解决方案,以确保开发过程顺利进行。 ... [详细]
  • 感谢您的邀请。在选择职业路径时,Web前端开发和软件测试是两个值得考虑的方向。然而,成为讲师则需要更多经验和专业技能的积累。通常情况下,讲师不仅需要具备深厚的技术背景,还需要在相关领域有实际工作经验,才能胜任教学任务。无论是前端还是测试方向的讲师,都需要在实践中不断磨练自己的技术和教学能力。 ... [详细]
  • 本文深入探讨了RecyclerView的缓存与视图复用机制,详细解析了不同类型的缓存及其功能。首先,介绍了屏幕内ViewHolder的Scrap缓存,这是一种最轻量级的缓存方式,旨在提高滚动性能并减少不必要的视图创建。通过分析其设计原理,揭示了Scrap缓存为何能有效提升用户体验。此外,还讨论了其他类型的缓存机制,如RecycledViewPool和ViewCacheExtension,进一步优化了视图复用效率。 ... [详细]
  • C#是一种现代、简洁且完全面向对象的编程语言,其设计受到了C、C++和Java等语言的影响。作为.NET框架的核心组成部分,C#不仅具备强大的功能,还能够支持广泛的应用系统开发,包括但不限于桌面应用程序、Web服务和移动应用。 ... [详细]
  • 本文通过具体的代码示例,详细解析了如何在Java中利用AspectJ实现面向切面编程(AOP)。AspectJ是Java平台上的一个AOP框架,通过引入连接点(JoinPoint)、通知(Advice)和切面(Aspect)等核心概念,扩展了Java语言的功能。文章首先介绍了AspectJ的基本概念,然后通过实际编码示例展示了如何定义和应用切面,帮助读者更好地理解和掌握这一技术。 ... [详细]
  • 许多人渴望成为项目经理,认为这是职业发展的必经之路。拿破仑曾说,不想当将军的士兵不是好士兵。这种追求职位晋升的愿望值得肯定,因为这表明他们希望在工作中发挥更大的影响力。然而,有些人误以为担任项目经理就意味着成为了真正的领导者,可以指挥团队。实际上,项目经理往往需要承担更多协调和执行的任务,更像是团队中的协调者和执行者,而非传统意义上的管理者。 ... [详细]
  • Webvan的失败:基于用户假设的产品开发与快速扩张策略分析
    1996年,Webvan试图将“当日送达”和“O2O”等现代商业模式变为现实。其商业计划不仅旨在服务于单个城市的居民,而是计划覆盖整个美国。然而,基于用户假设的产品开发和激进的快速扩张策略最终导致了Webvan的失败。本文深入分析了这些战略失误及其对后续互联网企业发展的启示。 ... [详细]
author-avatar
mobiledu2502928311
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有