spring编程式事务在多线程下无法保证原子性,如何解决?

大家不要纠结我的例子 可能场景举例不好 主要看标题

问题遇到的现象和发生背景

场景:商品信息保存
方法:使用多线程将数据插入insert拆分成了线程池里一个个子线程进行(这些数据存在不同的表
问题:多线程下导致spring事务失效,子线程无事务管理。

我的解答思路和尝试过的方法

因为spring事务是由ThreadLocal来控制的,而开启子线程导致spring事务无法管理到子线程的操作。
查阅资料后,通过使用spring编程式事务 在主线程和子线程中分别开启事务,并通过同一个倒计时类对象CountDownLatch来分别阻塞主线程和子线程,最后通过回滚标识AtomicBoolean来判断是否需要统一提交事务或统一回滚事务。

但是又有一个新问题:这样操作可以保证事务的统一回滚或统一提交,然而提交/回滚还是通过各自线程进行操作,不能保证原子性,若发生宕机可能会导致部分线程提交/回滚失败的情况出现。

如果你有100万条数据要写入数据库,要保证全部写入或全部回滚,那你老老实实放到一个事务里好了,别玩多线程。
多线程里就应该放那些本身自成一个事务的逻辑
多线程是为了解决单线程速度慢的问题,而你多线程之间还要互相等,那效率也没有提高啊,是在折腾啥呢

seata

第一个问题,每个线程自己独立开启事务,如果交给一个线程去做提交或者回滚,假设有a,b两个线程,你觉得b能拿到a线程下的connect嘛?
第二个问题,为什么不考虑自己将connect传入到子线程,多个线程使用同一个connect,通过future,只要子线程抛异常,主线程统一处理回滚

能问下,为什么insert操作要开多线程去操作呢?是因为数据量太大还是