ScheduledExecutorService 调用 scheduleAtFixedRate 怎么终止异常结束
时间: 2024-02-28 18:50:34 浏览: 85
ScheduledExecutorService 是 Java 提供的一个用于定时执行任务的接口,其中的 scheduleAtFixedRate 方法可以按照固定的时间间隔周期性地执行任务。
要终止异常结束一个 scheduleAtFixedRate 的任务,可以使用 ScheduledFuture 对象来取消任务的执行。ScheduledFuture 是一个表示延迟任务或周期性任务的结果的接口,它继承自 Future 接口。
首先,你需要在调用 scheduleAtFixedRate 方法时,将返回的 ScheduledFuture 对象保存起来。然后,在需要终止任务的地方,调用 ScheduledFuture 的 cancel 方法来取消任务的执行。
下面是一个示例代码:
```java
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
public class Main {
public static void main(String[] args) {
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
// 调用 scheduleAtFixedRate 方法,并保存返回的 ScheduledFuture 对象
ScheduledFuture<?> future = executor.scheduleAtFixedRate(() -> {
// 执行你的任务逻辑
System.out.println("执行任务");
}, 0, 1, TimeUnit.SECONDS);
// 在需要终止任务的地方,调用 ScheduledFuture 的 cancel 方法
// 这里是模拟异常结束的情况
try {
Thread.sleep(5000); // 等待一段时间后终止任务
future.cancel(true); // 取消任务的执行
System.out.println("任务已终止");
} catch (InterruptedException e) {
e.printStackTrace();
}
executor.shutdown(); // 关闭线程池
}
}
```
在上面的示例中,我们创建了一个 ScheduledExecutorService,并调用 scheduleAtFixedRate 方法来执行一个简单的任务。然后,我们等待一段时间后,调用 ScheduledFuture 的 cancel 方法来终止任务的执行。
阅读全文