TypechoJoeTheme

王子博客

用户名
密码
用户名
邮箱
搜索到 2 篇与 多线程 的结果 ———
2021-06-25

多线程事务回滚方法(二)

多线程事务回滚方法(二)
我们开发的时候常常会遇到多线程事务的问题。以为添加了@Transactional注解就行了,其实你加了注解之后会发现事务失效。原因:数据库连接spring是放在threadLocal里面,多线程场景下,拿到的数据库连接是不一样的,即是属于不同事务。本文是基于springboot的@Async注解开启多线程,,并通过自定义注解和AOP实现的多线程事务,避免繁琐的手动提交/回滚事务 (CV即用、参数齐全、无需配置)一、springboot多线程(声明式)的使用方法?1、springboot提供了注解@Async来使用线程池,具体使用方法如下:(1) 在启动类(配置类)添加@EnableAsync来开启线程池(2) 在需要开启子线程的方法上添加注解@Async注意: 框架默认 -----> 来一个请求开启一个线程,在高并发下容易内存溢出所以使用时需要配置自定义线程池,如下:@Configuration @EnableAsync public class ThreadPoolTaskConfig { @Bean("threadPoolTaskExecuto...
王子
2021-06-25

springboot,多线程

202 阅读
1 评论
2021年06月25日
202 阅读
1 评论
2021-02-25

多线程事务回滚方法(一)

多线程事务回滚方法(一)
介绍1.最近有一个大数据量插入的操作入库的业务场景,需要先做一些其他修改操作,然后在执行插入操作,由于插入数据可能会很多,用到多线程去拆分数据并行处理来提高响应时间,如果有一个线程执行失败,则全部回滚。2.在spring中可以使用@Transactional注解去控制事务,使出现异常时会进行回滚,在多线程中,这个注解则不会生效,如果主线程需要先执行一些修改数据库的操作,当子线程在进行处理出现异常时,主线程修改的数据则不会回滚,导致数据错误。案例演示下面是事务不成功案例演示。线程池配置package com.mry.rollback.config; import java.util.concurrent.ExecutorService; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; /** * 线程池配置 */ public class Executor...
王子
2021-02-25

springboot,多线程

91 阅读
0 评论
2021年02月25日
91 阅读
0 评论