java多线程更新一条数据

iMontrz 2017-09-15 01:58:22
我一个操作有两个线程,第一个线程有一个事务,在这个线程里面update了一条数据,锁了这张表,还没提交事务,现在第二个线程又去update这条数据,造成了这张表的死锁,数据库是oracle,持久层是ibatis在操作。
我现在想解决这个锁表问题,应该怎么解决,请教下各位大神
...全文
20071 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
iMontrz 2017-09-15
  • 打赏
  • 举报
回复
引用 2 楼 pany1209 的回复:
这是死锁???
现在是A执行完了,数据库的session有一条对这张表的锁记录,锁的模式是更新那一级别,然后B再去对这条数据执行更新操作就会再出现一条锁记录,java的话一直就会卡在stepping不会执行下去了,那这种情况叫什么呢。有点小白
iMontrz 2017-09-15
  • 打赏
  • 举报
回复
引用 1 楼 zs808 的回复:
楼主没有抓住死锁的根本,死锁不是A锁了,B再去锁,就死锁了。而是A锁了B需要的部分,B锁了A需要的部分,形成了一个环型锁。你看一下你的代码,有没有出现相互锁的情况。
现在是A执行完了,数据库的session有一条对这张表的锁记录,锁的模式是更新那一级别,然后B再去对这条数据执行更新操作就会再出现一条锁记录,java的话一直就会卡在stepping不会执行下去了
李德胜1995 2017-09-15
  • 打赏
  • 举报
回复
这是死锁???
zs808 2017-09-15
  • 打赏
  • 举报
回复
楼主没有抓住死锁的根本,死锁不是A锁了,B再去锁,就死锁了。而是A锁了B需要的部分,B锁了A需要的部分,形成了一个环型锁。你看一下你的代码,有没有出现相互锁的情况。

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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