我有一项需要按计划执行的任务。 (它基本上轮询数据库以查找更改,然后根据结果执行代码)。问题是我需要轮询任务,即使它已经在执行。
到目前为止,我尝试使用带有scheduleAtFixedRate()
方法的Timer / TimerTask组合和带有scheduleAtFixedRate()
方法的ScheduledThreadPoolExecutor / Thread组合。
两者都在等待当前计划任务完成后再运行下一个任务。我需要能够安排一个任务每5秒运行一次,即使最后一次执行任务还没有完成,它也会运行。
有什么想法吗?
答案 0 :(得分:3)
如何使用一个Timer
作为“启动”计时器,然后使用单独的线程池执行:当计时器滴答时,将任务提交给线程池以立即执行。 (您可能希望调整线程池以同时运行一些最大数量的任务。)