ScheduledExecutorService中断具体任务的周期性执行

ScheduledExecutorService interrupt periodic execution of concrete tasks

我有一个工作池,我 运行 在 ScheduledExecutorService 的帮助下定期工作。现在我想停止定期执行某些任务,而其他任务应该保持不变。这个仪表的好方法是什么?

ScheduledExecutorService 中的方法return 一个 ScheduledFuture。您可以保留对此 ScheduledFuture 的引用,并在您要取消的特定对象上调用取消。

或许可以将它们保存在带有某种标识符的地图中,这样您就知道要取消哪些。

ScheduledExecutorService bla;    
//Put a bunch of scheduled stuff in a map
for(int i = 0; i < 10; i++){
    map.put(i, bla.schedule(() -> {}, 10, TimeUnit.DAYS));  
}
//Cancel number 5
map.get(5).cancel(true);