正文
导致的事务失效
今天遇到个事务失效问题,事务场景是Transactional事务注解,在list.parallelStream循环中做更新操作,这样可能会导致事务失效,而且还没有抛异常,也没有回滚。我当时的写法是循环中更新两张表,伪代码如下:
method(list){
listObj.parallelStream.for(obj->{
tableA.update();
tableB.update();
});
}
看数据库的时候,有时候数据更新不全,比如说A表应该更新两条记录,但是却更新了一条记录。
没去看源码去深究,猜测应该是多个线程时,对于数据库来说应该是开启了多个客户端,所以是不同的事务!!
导致的数据不正常
parallelStream坑2:今天解决问题,数据集合在满足非空条件的情况下,仍然抛出了null异常,最后得出是因为parallelStream并行流,导致的集合安全问题,所以,在循环中应使用线程安全的集合类或者避免使用
数据为空
数据重复
一个小坑,记一下了