多线程事务怎么回滚?

文章目录

      • 应用过的知识点
      • 背景介绍
      • 公用的类和方法
      • 示例事务不成功操作
      • 代码改造:

工作内容,不对外开放

应用过的知识点

事务、均分list为n等份、构建一个合理的线程池、sqlSession、CountDownLatch、AtomicBoolean

背景介绍

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

2,在spring中可以使用@Transactional注解去控制事务,使出现异常时会进行回滚,在多线程中,这个注解则不会生效,如果主线程需要先执行一些修改数据库的操作,当子线程在进行处理出现异常时,主线程修改的数据则不会回滚,导致数据错误。

3,下面用一个简单示例演示多线程事务。

公用的类和方法

    /**
     * averageAssign用来把l

你可能感兴趣的:(java,数据库,开发语言)