scheduleAtFixedRate
方法本身不支持任务的取消。但是,你可以使用 ScheduledFuture
对象来取消一个已经调度的任务。
当你使用 scheduleAtFixedRate
方法时,它会返回一个 ScheduledFuture
对象。你可以使用这个对象的 cancel()
方法来取消任务。下面是一个简单的示例:
import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; public class ScheduleAtFixedRateExample { public static void main(String[] args) { ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); Runnable task = () -> System.out.println("Task is running"); ScheduledFuture> scheduledFuture = executor.scheduleAtFixedRate(task, 0, 1, TimeUnit.SECONDS); try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } // Cancel the task scheduledFuture.cancel(true); executor.shutdown(); } }
在这个示例中,我们创建了一个 ScheduledExecutorService
,并使用 scheduleAtFixedRate
方法调度一个任务。然后,我们使用 ScheduledFuture
对象的 cancel()
方法在 5 秒后取消任务。