我创建了一个简单的任务,每两分钟运行一次,一旦布尔值变为true,我想停止该任务。

ScheduledExecutorService scheduledxecutor = Executors.newScheduledThreadPool(1);

ScheduledFuture<?> scheduledFuture = scheduledExecutor.scheduleAtFixedRate(drawRunnable , 0, 2, TimeUnit.MINUTES);


我一直潜伏在stackoverflow上,基本上发现我需要使用scheduledFuture.cancel(false)scheduledExecutor.shutdown()

我应该使用哪一个?

最佳答案

cheduleExecutor.shutdown()是更好的选择,因为它可以优雅地启动所有提交的任务的关闭,而ScheduledFuture.cancel(false)仅处理该特定任务。


ExecutorService.shutdown() Java Doc
Future.cancel(boolean) JavaDoc

10-04 19:19