多线程更新同一个表问题

msliang 2015-10-26 11:03:15
比如有10个线程,每个线程都是定时执行的,可是有可能有几个会同时执行,同时执行哦
然后对同一个表进行更新操作,经常是同一个表里面有同一条数据的更新操作。

批量更新的;里面往往会有同一个数据的存在,不同线程间

请问,怎么处理才不会产生冲突?现在提示:Deadlock found when trying to get lock;try restarting transcation ,产生死锁了
如何解决呢?
...全文
1061 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
别闹腰不好 2019-01-09
  • 打赏
  • 举报
回复
用的什么数据库,加表级排他锁。
开拓者Amadues 2019-01-08
  • 打赏
  • 举报
回复
你是不是用了什么框架,然后这个框架封装的数据库方法内部是上锁的(应用层上锁)。 如果你是Java用XDBC直接连SQL,应该不会报这种消息的。
开拓者Amadues 2019-01-08
  • 打赏
  • 举报
回复
这个看你业务上有没有要求先来后到的。 数据库里也有锁的,不管你应用层是不是并发,数据库层总有一个执行先后。
RUA好多鱼~ 2019-01-08
  • 打赏
  • 举报
回复
和数据库交互修改数据的代码上加了锁的话应该就只能有一个线程修改数据了吧,这样在数据库上加上更新人,更新时间等标志位就可以吧
sk815 2019-01-08
  • 打赏
  • 举报
回复
多线程处理是为了提升效率 你不控制取数逻辑 10个线程反复处理相同的数据? 那要多线程好像没什么意义
Insist_on_progress 2019-01-08
  • 打赏
  • 举报
回复
线程上锁,或者单例模式。
msliang 2019-01-07
  • 打赏
  • 举报
回复
试试这个呢,哎,好久没逛CSDN了 https://u19170889.ctfile.com/fs/19170889-329807047
Coder_D 2015-11-26
  • 打赏
  • 举报
回复
对数据库而言 --- 乐观锁和悲观锁 对代码而言 --- 设置一个mutex,10个线程共享,更新语句统一写在获得这把锁的同步代码块中
xuteng1 2015-11-26
  • 打赏
  • 举报
回复
数据库都自带锁的吧,多个线程操作同一张表,只要有一个线程更新这个表,其他线程都不会同时去更新这张表,坐等知情人回答
杨春龙 2015-11-26
  • 打赏
  • 举报
回复
现线程执行方法上加锁 或可以调用消息队列实现操作数据库的功能
chenhao237 2015-11-25
  • 打赏
  • 举报
回复
在更新方法上加锁
  • 打赏
  • 举报
回复
设置乐观锁,表增加更新时间或者版本字段,通过这些来控制

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧