V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
V2EX  ›  RichardX2023  ›  全部回复第 2 页 / 共 2 页
回复总数  37
1  2  
2023 年 12 月 18 日
回复了 RichardX2023 创建的主题 Java Java -多线程事务无法完美实现吗
@ZZ74
@ppto 多线程操作适合用于查询、插入、删除,可能不适合更新。
更新操作数据库会自动上行锁,假如两个任务操作了同一行数据。
任务一拿到行锁-完成任务-等待任务二完成一起 commit 并释放锁,
任务二等待行锁占用者释放行锁,它得拿到锁才能进行更新,
所以任务一一直等待事务提交释放行锁任务二一直处于行锁等待
2023 年 12 月 18 日
回复了 RichardX2023 创建的主题 Java Java -多线程事务无法完美实现吗
@BQsummer https://developer.aliyun.com/article/1203834
这种方式的确是可行的,它实实在在的解决了事务的提交回滚在各个子线程处理的问题,但是,它也有自己的局限性,
```sqlSession.getMapper() ```问题就在这行代码,就是说只有通过这个方法获取的 Mapper 才能进行事务控制,通过 spring 周期管理的 Mapper 还是不受这个事务控制的,这个方法获取的 Mapper 是通过代理又创建了一个新的实例。

那么它的实现逻辑也就不能实现我的诉求,我希望是这个多线程工具对业务代码没有侵入性,也就是业务代码只要实现一个 Runnable 或者 Callable 就可以直接使用,这个显然需要对业务代码进行改动的
2023 年 12 月 18 日
回复了 RichardX2023 创建的主题 Java Java -多线程事务无法完美实现吗
@monmon 老项目升级 jdk 比较困难
2023 年 12 月 18 日
回复了 RichardX2023 创建的主题 Java Java -多线程事务无法完美实现吗
@jli100 差不多,能看得清晰一点
2023 年 12 月 18 日
回复了 RichardX2023 创建的主题 Java Java -多线程事务无法完美实现吗
@ZZ74 当然有关系,所有任务跑完 commit ,线程池只有 10 个线程一次只能执行 10 个任务怎么全跑完,10 个任务执行完了是 commit 还是 rollback ,后边还有任务呢
2023 年 12 月 14 日
回复了 RichardX2023 创建的主题 Java Java -多线程事务无法完美实现吗
@BQsummer 好的,忘记还有这种方式了
2023 年 12 月 14 日
回复了 RichardX2023 创建的主题 Java Java -多线程事务无法完美实现吗
好,我研究下,忘记还有这种方式了
2023 年 12 月 14 日
回复了 RichardX2023 创建的主题 Java Java -多线程事务无法完美实现吗
找到个办法,完整代码
https://i.imgur.com/SzGG2qC.png
2023 年 12 月 14 日
回复了 RichardX2023 创建的主题 Java Java -多线程事务无法完美实现吗
@ppto 对的,我这个实现的思路就是来自 seata ,阿里的那个分布式事务服务。
2023 年 12 月 14 日
回复了 RichardX2023 创建的主题 Java Java -多线程事务无法完美实现吗
@BuffDog 多个事务,只是需要协同控制一起提交和回滚
2023 年 12 月 14 日
回复了 RichardX2023 创建的主题 Java Java -多线程事务无法完美实现吗
@MakHoCheung 问题不是因为耗时吗,需要节省时间就需要多线程。多线程就得多事务
2023 年 12 月 14 日
回复了 RichardX2023 创建的主题 Java Java -多线程事务无法完美实现吗
@BQsummer 是滴,目前我的观点看,二阶段提交无解
2023 年 12 月 14 日
回复了 RichardX2023 创建的主题 Java Java -多线程事务无法完美实现吗
贴点代码看看
https://imgur.com/ElOAPtp
2023 年 12 月 14 日
回复了 RichardX2023 创建的主题 Java Java -多线程事务无法完美实现吗
@BuffDog 1 、排队,20 个任务,线程池只能处理 10 个处理结束后就得考虑提交或者回滚了,然后 10 个任务结束,继续下面 10 个任务。假如前 10 个任务提交,后 10 个需要回滚,前面 10 个任务的提交与后面的无法做到事务的一致性
2023 年 12 月 14 日
回复了 RichardX2023 创建的主题 Java Java -多线程事务无法完美实现吗
@janwarlen 确实是手动提交的,但是问题还是存在的
2023 年 8 月 1 日
回复了 villa2935 创建的主题 Python Python 新手之二
2023 年 7 月 31 日
回复了 villa2935 创建的主题 Python Python 新手
for i in range(items .__len__()):
print(i, items [i])
1  2  
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2874 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 17ms · UTC 03:54 · PVG 11:54 · LAX 20:54 · JFK 23:54
♥ Do have faith in what you're doing.