hongye22
hongye22
采纳率0%
2016-10-10 14:06 阅读 2.3k

Java多线程更新数据时如何控制不同的线程取不同的数据

请大神帮帮忙
有一批数据需要做update,写了个多线程对其处理。5个并发,根据表里的status状态做更新,每次取status=1的数据更新,因为数据量比较大,还加了个rownum=200,一次取200条做。
在实际中发现,5个线程进来时,第一个线程取到了状态为1的200条数据更新,后面的几个线程也会继续对这200条数据更新,而不是取其他的数据。而且,其他线程执行时线程1已经更新了这200条数据的状态,他们怎么还会重复执行?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • oSanYeCao1234567 RoidCoder 2016-10-10 14:39

    每个线程进来时加个判断吧,status=1时去更新,并修改status标志位为0,否则不更新

    点赞 评论 复制链接分享
  • dj159357 飞啊飞123 2016-10-11 01:41

    数据库拥有隔离性,多线程操作的时候,是取不了其他线程已经使用的数据,只能你自己把数据全部取出来,放入内存,然后多线程更新数据,
    再保存到数据库。

    点赞 评论 复制链接分享

相关推荐