ScheduledExecutorService多任务暂停其中一个
时间: 2023-10-13 15:23:27 浏览: 95
如果你想暂停 `ScheduledExecutorService` 中的一个任务,可以通过将任务从 `ScheduledFuture` 中取消来实现。`ScheduledFuture` 是一个可以取消的 `Future`,你可以使用它来取消计划执行的任务。
以下是一个示例代码,它使用 `ScheduledExecutorService` 来调度两个任务,然后暂停其中一个任务:
```
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(2);
// 调度第一个任务
ScheduledFuture<?> future1 = executor.scheduleAtFixedRate(() -> {
System.out.println("Task 1 is running...");
}, 0, 1, TimeUnit.SECONDS);
// 调度第二个任务
ScheduledFuture<?> future2 = executor.scheduleAtFixedRate(() -> {
System.out.println("Task 2 is running...");
}, 0, 2, TimeUnit.SECONDS);
// 暂停第二个任务
future2.cancel(false);
}
}
```
在这个示例代码中,我们创建了一个 `ScheduledExecutorService`,并且使用 `scheduleAtFixedRate()` 方法调度了两个任务。我们使用 `ScheduledFuture` 将每个任务的执行结果保存下来。然后,我们调用了 `cancel()` 方法,将第二个任务从 `ScheduledExecutorService` 中取消了。这个方法接受一个 `mayInterruptIfRunning` 参数,用于表示是否允许正在运行的任务被中断。在这个示例代码中,我们将这个参数设置为 `false`,表示不允许中断正在运行的任务。
阅读全文