ScheduledExecutorService 定时执行任务,例子
时间: 2024-06-13 18:01:49 浏览: 135
ScheduledExecutorService是Java并发包中提供的一种高级服务,用于在预定的时间间隔或延迟后执行任务。它是`java.util.concurrent.Executors`类的一个子接口,允许你在未来的某个时间执行Runnable或Callable任务,并且支持任务的重复调度和取消。
以下是一个简单的例子,展示了如何使用ScheduledExecutorService来定时执行一个任务:
```java
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ScheduledTaskExample {
public static void main(String[] args) {
// 创建一个单线程的ScheduledExecutorService实例
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
// 定义一个Runnable任务
Runnable myTask = () -> {
System.out.println("Task is running at: " + LocalDateTime.now());
};
// 设置任务在5秒后开始执行(延迟启动)
executor.schedule(myTask, 5, TimeUnit.SECONDS);
// 如果你想定期执行任务,例如每10秒执行一次,可以这样设置:
// executor.scheduleAtFixedRate(myTask, 0, 10, TimeUnit.SECONDS);
// 注意:如果你的应用在任务执行期间结束,ScheduledExecutorService不会自动关闭,需要手动关闭
// 执行完所有任务后,记得关闭它
// executor.shutdown();
}
}
```
在这个例子中,`schedule()`方法用于一次性在未来某个时间点执行任务,而`scheduleAtFixedRate()`方法则会按照指定的时间间隔(如10秒)重复执行任务,直到被取消。
阅读全文