我有一个Web应用程序,每小时与中央数据库同步四次。 这个过程通常需要2分钟。 我想在X:55、X:10、X:25和X:40运行此进程作为线程,以便用户知道在X:00、X:15、X:30和X:45他们有一个干净的数据库副本。 这只是管理期望。 我已经使用了
java.util.concurrent
中的执行器,但调度是使用scheduleAtFixedRate
完成的,我认为它不能保证在哪些小时实际运行。 我可以使用第一个延迟来启动Runnable
,使第一个接近启动时间,并安排每15分钟运行一次,但似乎这可能会随着时间的推移而发散。 有没有更简单的方法来安排线程在每个刻钟之前5分钟运行?
RuntimeException
可能会停止周期性执行。我曾经因此而受到伤害,所以我相应地编辑了答案。 - Enno Shioji