java.util.concurrent public interface ScheduledExecutorService
extends ExecutorService

一个ExecutorService可以安排命令在给定的延迟后运行,或者定期执行。
schedule方法创建具有各种延迟的任务并返回一个可用于取消或检查执行的任务对象。 scheduleAtFixedRate和scheduleWithFixedDelay方法创建并执行定期运行直到取消的任务。
使用Executor.execute(Runnable)和ExecutorService submit方法提交的命令被安排为请求延迟为零。在schedule方法中也允许零延迟和负延迟(但不是周期),并被视为立即执行的请求。
所有schedule方法都接受相对延迟和周期作为参数,而不是绝对时间或日期。将表示为java.util.Date的绝对时间转换为所需形式是一件简单的事情。例如,要安排在某个未来的date ,您可以使用: schedule(task, date.getTime() - System.currentTimeMillis(), TimeUnit.MILLISECONDS) 。但是请注意,由于网络时间同步协议、时钟漂移或其他因素,相对延迟的到期不必与启用任务的当前Date一致。
Executors类为此包中提供的 ScheduledExecutorService 实现提供了方便的工厂方法。
使用示例
这是一个类,其方法将 ScheduledExecutorService 设置为每隔十秒发出哔声,持续一小时:

import static java.util.concurrent.TimeUnit.*;
class BeeperControl {
private final ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(1);
public void beepForAnHour() {
final Runnable beeper = new Runnable() {
public void run() { System.out.println("beep"); }
};
final ScheduledFuture<?> beeperHandle =
scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);
scheduler.schedule(new Runnable() {
public void run() { beeperHandle.cancel(true); }
}, 60 * 60, SECONDS);
}
}

关注我的公众号SpaceObj 领取idea系列激活码

posted on   张伯灵  阅读(78)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)



点击右上角即可分享
微信分享提示