SpringBoot项目中控制线程池、多线程事务提交、回滚的方式

这篇具有很好参考价值的文章主要介绍了SpringBoot项目中控制线程池、多线程事务提交、回滚的方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

场景:
1、由于多线程每个线程都是一个异步任务,所以每个线程都是一个单独的事务,通常使用的声明式事务 @Transactional() 是无法控制多线程中事务的
2、所以只能另寻解决方式

解决:

一、基于TransactionStatus集合来控制多线程事务提交(推荐此方式)

1、代码案例文章来源地址https://www.toymoban.com/news/detail-616462.html

    @Autowired
    private DataSourceTransactionManager dataSourceTransactionManager;
    List<TransactionStatus> transactionStatuses = Collections.synchronizedList(new ArrayList<>());




    @Override
    @Transactional(rollbackFor = {Exception.class})
    public void testMultiThreadTransactional() throws BizException {

        //模拟总数据
        List<SysUserAddress> sysUserAddresses = ListUtil.toList();
        for (int i = 0; i < 10000; i++) {
            sysUserAddresses.add(new SysUserAddress(null, "上海市" + (i + 1), "上海市", "浦东新区"));
        }

        //线程数,按线程

到了这里,关于SpringBoot项目中控制线程池、多线程事务提交、回滚的方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 多线程事务怎么回滚?

    项目中用到了多线程去批量处理一些数据,当时想当然认为只要方法上加上@Transactional注解就好了,实际并未达到想要的处理效果。特此去学习了下关于多线程事务回滚相关方案,参考了网上其他资料,这里整理并记录下学习历程。 站在巨人的肩膀上,我们可以看的更远!

    2024年02月13日
    浏览(36)
  • Spring控制事务回滚

    1、Spring中开启事务的方式主要有两种: 编程式事务和声明式事务 。 2、事务是我们开发过程中经常会使用到的,为了在业务执行过程中出现异常时,回滚到原始状态。而事务的回滚在大多数情况下都是靠着 exception (异常)来触发回滚的,当事务机制捕捉到异常,就会开始回

    2024年02月09日
    浏览(33)
  • idea中git回滚的四种选项的意思是什么

    这四个选项是 Git 回滚操作中的四种模式,分别是 soft、mix、keep 和 hard。- Soft 模式:回滚到指定版本,并保留所有更改,这些更改将被重新提交。使用这种模式,你可以撤销已经提交的更改,然后重新提交。 - Mix 模式:回滚到指定版本,并保留所有更改,但是更改将不会被重

    2024年02月14日
    浏览(46)
  • spring事务里面开启线程插入,报错了是否会回滚?

    一道非常有意思的面试题目。大概是这样子的,如果在一个事务中,开启线程进行插入更新等操作,如果报错了,事务是否会进行回滚 示例1 示例2 element.setfElementId(10L); 为主键。SQL在第一次插入id=10的时候是没有问题的,在第二次插入id=10的时候,由于主键冲突了,导致报错,

    2023年04月12日
    浏览(52)
  • 支付宝一面:多线程事务怎么回滚?说用 @Transactional 可以回去等通知了!

    1,最近有一个大数据量插入的操作入库的业务场景,需要先做一些其他修改操作,然后在执行插入操作,由于插入数据可能会很多,用到多线程去拆分数据并行处理来提高响应时间,如果有一个线程执行失败,则全部回滚。 2,在spring中可以使用 @Transactional 注解去控制事务,

    2024年02月08日
    浏览(78)
  • SpringBoot 事务回滚注意事项

    参考资料 导致 Spring 事务失效常见的几种情况 SpringBoot2异常处理回滚事务详解(自动回滚/手动回滚/部分回滚) Spring,为内部方法新起一个事务,此处应有坑。 PlatformTransactionManager Spring 事务管理及失效总结 我认真总结并分析了 Spring 事务失效的十种常见场景 SpringBoot AOP配置全

    2024年02月14日
    浏览(38)
  • postgresql 内核源码分析 事务提交回滚状态记录 clog机制流程,commit log文件格式,事务状态为什么单独记录的原因,分组优化及leader更新机制

    ​ 专栏内容 : postgresql内核源码分析 手写数据库toadb 并发编程 ​ 开源贡献 : toadb开源库 个人主页 :我的主页 管理社区 :开源数据库 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. PostgreSQL是一种开源的关系型数据库管理系统,其内核源码的分析对于深入理

    2024年02月08日
    浏览(53)
  • springboot手动提交事务

    要手动提交事务,你需要在代码中获取当前的事务并调用它的 commit 方法。 在 Spring Boot 中,你可以通过在你的类中注入 PlatformTransactionManager 来获取当前的事务。然后,你可以使用 TransactionTemplate 类来手动执行事务。 例如: 在上面的代码中,我们使用 TransactionTemplate 的 exec

    2024年02月15日
    浏览(40)
  • springboot Junit单元测试默认事务不提交

    因为以前总觉得Junit单元测试配置比较繁琐,代码功能大多使用main方法或者postman测试,直到最近才使用单元测试,在测试过程中遇到了事务不提交的问题,一直以为是代码问题,后来才直到单元测试 默认不提交事务 ,记录下来,防止以后再次踩坑。 如上,入库操作不会实现

    2024年02月10日
    浏览(39)
  • 自定义注解实现springboot 多线程事务(基于@Async注解的多线程)

    目录 前言 一、springboot多线程(声明式)的使用方法? 二、自定义注解实现多线程事务控制 1.自定义注解 2.AOP内容 3.注解使用Demo 本文是基于springboot的@Async注解开启多线程, 并通过自定义注解和AOP实现的多线程事务, 避免繁琐的手动提交/回滚事务  (CV即用, 参数齐全, 无需配置

    2023年04月09日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包