| 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系列激活码

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于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)