【发布时间】:2018-10-05 06:59:40
【问题描述】:
在使用 java.util.TimerTask 调度任务时,我如何确保 run 方法仅在当前执行完成后执行,否则任务队列大小将不断增长,最终任务将始终执行。我是初学者,正在寻求帮助
【问题讨论】:
标签: java
在使用 java.util.TimerTask 调度任务时,我如何确保 run 方法仅在当前执行完成后执行,否则任务队列大小将不断增长,最终任务将始终执行。我是初学者,正在寻求帮助
【问题讨论】:
标签: java
使用ExecutorService#scheduleWithFixedDelay()。这将在当前任务完成时开始“延迟”(而不是scheduleAtFixedRate())
【讨论】:
使用java.util.Timer 和TimerTask。可以使用这些计时器的两种方法之一:
schedule(TimerTask task, long delay, long period)
scheduleAtFixedRate(TimerTask task, long delay, long period)
其中:task - 要调度的任务。delay - 任务执行前的延迟(毫秒)。period - 连续任务执行之间的时间(毫秒)。
另外,参考这篇文章:What is the difference between schedule and scheduleAtFixedRate?
【讨论】: