Java -多线程事务无法完美实现吗

查看 83|回复 4
作者:RichardX2023   
如果遇到高耗时操作肯定首先想到的就是通过多线程来实现,但是如果再加上一层事务控制就比较难办。之前根据二阶段提交的思路实现了多线程事务的控制,感觉好像没问题了。
      但是最近遇到一个问题,看起来很无解。如果任务量少,需要使用的线程数量也少,这种场景通过二阶段提交实现多线程事务控制是没有问题的。
      但是如果任务量很多的情况下:线程池的池子内部线程数量是有限的,所以任务量再大,同时在运行的也只能是线程池容量大小的任务数。在这个前提下,二阶段提交是需要等所有线程一阶段执行结束后,进入二阶段,统一回滚或者提交,回滚或者提交都是需要在各自线程内部进行
      比如任务量是 20 个,线程池容量是 10 ,一次性只能有 10 个任务在执行,这个限制下,仅仅能实现 10 个任务的统一提交或者回滚。描述大概就这样,需要代码的话再贴
      看有没有别的思路,我卡住了。

nbsp, 线程池, 线程, 提交

BuffDog   
资源限制,1.要么排队处理,要么直接抛弃 2.扩大资源限制
菜鸟想法
janwarlen   
通过 sql 手动开启事务和提交就可以了
RichardX2023
OP
  
@janwarlen 确实是手动提交的,但是问题还是存在的
RichardX2023
OP
  
@BuffDog 1 、排队,20 个任务,线程池只能处理 10 个处理结束后就得考虑提交或者回滚了,然后 10 个任务结束,继续下面 10 个任务。假如前 10 个任务提交,后 10 个需要回滚,前面 10 个任务的提交与后面的无法做到事务的一致性
您需要登录后才可以回帖 登录 | 立即注册

返回顶部