ScheduledExecutorService中断定期执行具体任务

时间:2016-06-20 08:01:05

标签: java multithreading scheduledexecutorservice

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

1 个答案:

答案 0 :(得分:5)

ScheduledExecutorService中的方法返回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);