Tag: 变量初始化

从ScheduledExecutorService中运行的任务本身中停止定期任务

在ScheduledExecutorService中运行时,是否有一种很好的方法可以阻止任务内部重复任务? 可以说,我有以下任务: Future f = scheduledExecutor.scheduleAtFixedRate(new Runnable() { int count = 0; public void run() { System.out.println(count++); if (count == 10) { // ??? cancel self } } }, 1, 1, TimeUnit.SECONDS); 从外面看,很容易通过f.cancel()取消,但是如何在指定的地方停止重复? (通过AtomicReference传递Future是不安全的,因为当scheduleAtFixedRate返回f迟到并且变量设置得太晚时有一个潜在的窗口,并且任务本身可能已经运行,在引用中看到null。)