parallelStream 事务失效、null、数据重复

正文

导致的事务失效

今天遇到个事务失效问题,事务场景是Transactional事务注解,在list.parallelStream循环中做更新操作,这样可能会导致事务失效,而且还没有抛异常,也没有回滚。我当时的写法是循环中更新两张表,伪代码如下:

method(list){
	listObj.parallelStream.for(obj->{
		tableA.update();
		tableB.update();
	});
}

看数据库的时候,有时候数据更新不全,比如说A表应该更新两条记录,但是却更新了一条记录。

没去看源码去深究,猜测应该是多个线程时,对于数据库来说应该是开启了多个客户端,所以是不同的事务!!

导致的数据不正常

parallelStream坑2:今天解决问题,数据集合在满足非空条件的情况下,仍然抛出了null异常,最后得出是因为parallelStream并行流,导致的集合安全问题,所以,在循环中应使用线程安全的集合类或者避免使用

数据为空
在这里插入图片描述
数据重复
在这里插入图片描述

一个小坑,记一下了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值