我有一项任务需要按计划执行。 (它基本上轮询数据库以查找更改,然后根据结果执行代码)。问题是我需要轮询任务发生,即使它已经在执行。
到目前为止,我已尝试将 Timer/TimerTask 组合与 scheduleAtFixedRate()
方法结合使用,并将 ScheduledThreadPoolExecutor/Thread 组合与 scheduleAtFixedRate()
方法结合使用。
两者都等待当前计划任务完成,然后再运行下一个。我需要能够安排一个任务每 5 秒运行一次,并且即使任务的最后一次执行尚未完成,它也会运行。
有什么想法吗?
最佳答案
如何使用一个 Timer
作为“启动”计时器,然后使用一个单独的线程池来执行:当计时器计时时,您将任务提交到线程池以立即执行。 (您可能希望调整线程池以同时运行一些最大数量的任务。)
关于Java并发执行线程任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3650619/