This question already has answers here:
ScheduledExecutorService - Check if scheduled task has already been completed

(2个答案)


5年前关闭。




对不起,我有些困惑,但是我有点困惑,需要一些并发协助。

如果我在一个类中有一个线程池,该线程池每10秒计算一次这样的值

private final ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1);
executorService.schedule(callable, 10, TimeUnit.SECONDS);


如何确定何时返回结果。结果准备好后,我需要处理地图并进行一些计算,然后删除/清空地图

我能想到的唯一方法是使用用户可观察的界面,但我猜这不是正确的方法

谢谢

最佳答案

您可以像这样使用ScheduledFuture并调用isDone(因为ScheduledFuture扩展了Future)

ScheduledFuture schedule = executorService.schedule(callable, 10, TimeUnit.SECONDS);
schedule.isDone()

10-06 06:56