请大神帮帮忙
有一批数据需要做update,写了个多线程对其处理。5个并发,根据表里的status状态做更新,每次取status=1的数据更新,因为数据量比较大,还加了个rownum=200,一次取200条做。
在实际中发现,5个线程进来时,第一个线程取到了状态为1的200条数据更新,后面的几个线程也会继续对这200条数据更新,而不是取其他的数据。而且,其他线程执行时线程1已经更新了这200条数据的状态,他们怎么还会重复执行?
每个线程进来时加个判断吧,status=1时去更新,并修改status标志位为0,否则不更新
数据库拥有隔离性,多线程操作的时候,是取不了其他线程已经使用的数据,只能你自己把数据全部取出来,放入内存,然后多线程更新数据,
再保存到数据库。