java多模块并发问题解决
问题描述
现在程序有A和B两个表,要求两个表不能同时存在。例如新增A表程序先判断B表是否存在数据,如果B表无数据时新增A表。但是这样存在并发问题,当A表通过判断后执行新增前B表同时也执行了新增,最终就会导致A表和B表同时存在数据。
尝试使用同步锁解除此问题,但AB两个表操作分别放在不同的Class类中。
求一个有效的解决方案。多谢!!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
解决并发问题一般这几种思路:
CAS
。在两个不同的
Class
文件是啥意思?如果是一个进程那就用synchronized
或者是Lock
搞定。不同的进程就得用分布式锁了。
第二种方案可以将操作请求发到
MQ
中,转换为串行执行。这里
CAS
不太适合。不在同一个class为什么不能加锁?
最好用数据库乐观锁解决以上问题。
在所有相关操作上使用同一个锁同步不就行了?