ScheduledExecutorService 定时一点 启动任务
时间: 2024-06-13 09:01:45 浏览: 97
`ScheduledExecutorService`是Java并发工具包中的一部分,它提供了一种灵活的方式来安排任务在特定的时间间隔执行,或者按照给定的延迟执行。这个服务允许你在未来的某个时间启动一次或多次任务,这些任务可以在单独的线程上异步执行,从而避免阻塞主线程。
使用`ScheduledExecutorService`的步骤大致如下:
1. 创建`ScheduledExecutorService`实例:你可以使用`Executors`工厂类的静态方法(如`newScheduledThreadPool()`)创建一个线程池,或者直接使用`ThreadPoolExecutor`等。
```java
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
```
2. 创建Runnable或Callable任务:首先定义一个实现了`Runnable`或`Callable`接口的类,或者直接传递一个匿名内部类。
```java
Runnable task = () -> {
// 任务代码
};
```
3. 使用`scheduleAtFixedRate`、`scheduleWithFixedDelay`、`schedule`或`scheduleOnce`方法安排任务:
- `scheduleAtFixedRate`: 任务按固定时间间隔执行,包括开始和结束的间隔时间。
- `scheduleWithFixedDelay`: 任务按固定延迟执行,但每个周期之间的时间是固定的。
- `schedule`: 任务在一个精确的延迟后仅执行一次。
- `scheduleOnce`:已弃用,推荐使用`schedule`。
```java
// 每隔5秒执行一次任务
executor.scheduleAtFixedRate(task, 0, 5, TimeUnit.SECONDS);
```
4. 关闭`ScheduledExecutorService`:当不再需要服务时,记得调用`shutdown`或`shutdownNow`关闭它,防止资源泄露。
```java
executor.shutdown();
```
阅读全文