java多模块并发问题解决

发布于 2022-09-11 21:53:42 字数 201 浏览 28 评论 0

问题描述

现在程序有A和B两个表,要求两个表不能同时存在。例如新增A表程序先判断B表是否存在数据,如果B表无数据时新增A表。但是这样存在并发问题,当A表通过判断后执行新增前B表同时也执行了新增,最终就会导致A表和B表同时存在数据。

尝试使用同步锁解除此问题,但AB两个表操作分别放在不同的Class类中。

求一个有效的解决方案。多谢!!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

早茶月光 2022-09-18 21:53:42

解决并发问题一般这几种思路:

  • 加锁。
  • 并行转串行。
  • CAS

在两个不同的 Class 文件是啥意思?如果是一个进程那就用 synchronized 或者是 Lock 搞定。

不同的进程就得用分布式锁了。

第二种方案可以将操作请求发到 MQ 中,转换为串行执行。

这里 CAS 不太适合。

玩心态 2022-09-18 21:53:42

尝试使用同步锁解除此问题,但AB两个表操作分别放在不同的Class文件中。

不在同一个class为什么不能加锁?

找回味觉 2022-09-18 21:53:42

最好用数据库乐观锁解决以上问题。

他夏了夏天 2022-09-18 21:53:42

在所有相关操作上使用同一个锁同步不就行了?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文