java 原生 ScheduledExecutorService 封装
时间: 2024-04-16 18:22:07 浏览: 167
Java原生的ScheduledExecutorService是一个用于定时执行任务的接口,它是ExecutorService的子接口。它提供了一种方便的方式来执行定时任务,可以在指定的时间间隔内重复执行任务,也可以在指定的延迟时间后执行任务。
下面是一个简单的封装示例:
```java
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class TaskScheduler {
private ScheduledExecutorService executorService;
public TaskScheduler() {
executorService = Executors.newScheduledThreadPool(1);
}
public void scheduleTask(Runnable task, long initialDelay, long period) {
executorService.scheduleAtFixedRate(task, initialDelay, period, TimeUnit.MILLISECONDS);
}
public void stop() {
executorService.shutdown();
}
}
```
在上面的示例中,我们创建了一个TaskScheduler类来封装ScheduledExecutorService。它使用了Executors类的newScheduledThreadPool方法来创建一个ScheduledExecutorService实例。
scheduleTask方法用于添加定时任务,它接受一个Runnable对象作为任务,以及初始延迟时间和重复执行的时间间隔。任务将在初始延迟时间后开始执行,并且每隔指定的时间间隔重复执行。
stop方法用于停止定时任务的执行,它调用了ScheduledExecutorService的shutdown方法来关闭线程池。
使用示例:
```java
public class Main {
public static void main(String[] args) {
TaskScheduler scheduler = new TaskScheduler();
Runnable task = () -> {
// 执行任务的逻辑
System.out.println("Task executed");
};
scheduler.scheduleTask(task, 0, 1000); // 每隔1秒执行一次任务
// 等待一段时间后停止任务的执行
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
scheduler.stop();
}
}
```
上面的示例中,我们创建了一个TaskScheduler实例,并定义了一个任务task,然后使用scheduleTask方法将任务添加到定时任务中。任务将每隔1秒执行一次。在等待5秒后,我们调用stop方法停止任务的执行。
希望以上内容能够帮助到你。
阅读全文