有时候需要使用多线程来提高对于CPU,尤其是多核CPU的利用率,来提高性能。Spring的bean一般都是无状态的,单例的。所以也就是线程安全的。那么对于声明式的事务,在多线程环境下又是怎么处理的呢?
看看下面的例子:
ClassA.java
@Transactional
public void methodA(){
ExecutorService executorService = Executors.newFixedThreadPool(4);
executorService.execute(new Runnable() {
public void run() {
classB.methodB();
}
});
}
ClassB.java
@Transactional
public void methodB(){
updateDB();
}
你认为methodB和methodA的事务是同一个吗?其实不是。Spring的事务是和thread绑定的。由于methodB在另起的一个新的线程中,所以Spring会为其生成一个新的事务。
自然,如果methodA或methodB中因出错而rollback,也是彼此不影响的。
分享到:
相关推荐
spring boot 纯注解方法事务控制回滚,注解+简单配置文件使用多线程demo
Synchronized锁在Spring事务管理下,导致线程不安全。
Spring中事务的传播属性详解,Spring中事务的传播属性详解
spring 事务传播 demo
通过代码解析spring传播特性,包括 1、Propagation.REQUIRED 方法被调用时自动开启事务,在事务范围内使用则使用同一个事务,否则开启新事务。 2、Propagation.REQUIRES_NEW 无论何时自身都会开启事务 3、...
系统理解spring事务传播属性,和隔离级别
spring事务的传播特性和事务隔离级别
一个Spring框架的bean工具,可以在多线程环境下手动创建bean。使用时请注意在spring配置文件下加入<bean id="springBeanUtils" class="com.hujin.common.util.SpringBeanUtils"/>
Spring事务的传播特性和隔离级别 事务的几种传播特性详细介绍
一个简单的spring的多线程demo,希望能对大家有用
spring 事务传播与隔离级别DEMO 脏读、重复读、幻影读 spring 事务传播与隔离级别DEMO 脏读、重复读、幻影读
spring事务与数据库操作
spring传播机制个人学习
事务传播特性&事务隔离级别 详细的事务传播特性&事务隔离级别
Spring事务管理Demo
Spring事务流程图时序图Spring事务流程图时序图Spring事务流程图时序图Spring事务流程图时序图
本文介绍spring事务传播的几种方式
Spring在Transaction事务传播行为种类,希望对大家有所帮助
spring事务配置详解 spring事务配置详解
spring 事务spring 事务spring 事务spring 事务spring 事务