草庐IT

lastExecution

全部标签

java - 在 java 中安排单线程重复运行,但如果上一次运行未完成则跳过当前运行

有时重复任务的持续时间比它的周期长(在我的例子中,这可能一次发生几个小时)。想一想需要7分钟运行并计划每10分钟运行一次的重复任务,但有时连续几个小时每次运行需要15分钟。Timer和ScheduledThreadPoolExecutor类都有一个scheduleAtFixedRate方法,通常用于此类功能。但是,两者都有“落后就要catch”的特点。换句话说,如果Timer落后于几次执行,它会建立一个工作队列,该队列将连续工作,直到它catch运行次数,如果没有任何任务花费的时间超过指定期间。如果上一次运行未完成,我想通过跳过当前执行来避免这种行为。我有一个解决方案,它涉及弄乱池化执