请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

定时任务,任务重复问题

老师,您好。
我想请教您个问题,我在项目里设置了一个10个线程的线程池,然后做定时任务。
任务内容:查询数据库某张表状态值为0的记录数,将状态值改为1。
我现在的做法是:启动线程池,每5分钟执行一次任务,但是如果线程1一下执行5w条任务,在这5分钟只执行了2w条,还有3w条的数据没有处理完,但是这个时候线程2已经进来了,由于线程1还有3万条的记录没有更新状态值,线程2查询数据库的时候就能查询到这三万条数据,并做出和线程1相同的处理。
虽然对数据库的记录处理不会改变,但是这里多了3w次多余操作,降低了性能,也对数据库造成额外的压力。想问下有没有啥优秀的解决办法。
望回复,谢谢!!!

正在回答

2回答

QQ群内已回复

1 回复 有任何疑惑可以回复我~
慕圣2057723 2021-02-10 17:28:33

你好,请问下解决方案是啥呢,加个字段表示处理中,每次只查询未处理的数据?

1 回复 有任何疑惑可以回复我~
  • 提问者 林就远 #1
    用forkjoinpool,配合countdown使用,然后用while循环使用,而不是定时的方法。(用主线程查出待处理任务,将任务丢给forkjoinpool池,用countdown控制任务是否完成,完成之后主线程继续去查询待处理任务)
    回复 有任何疑惑可以回复我~ 2021-02-13 18:49:21
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信