java Timer定时任务调度原理

本文介绍了Java中的Timer类作为定时任务调度控制器的工作原理。主要内容包括Timer、TimerThread、TaskQueue等组件的职责,以及如何通过period设置一次性或周期性任务。文章详细探讨了TaskQueue作为小顶堆结构的实现,并分享了栈的维护策略,如向下和向上调整操作。通过阅读源码,可以深入了解Timer涉及的线程安全、优先级队列和调度知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近看了一下java定时调度Timer的源码,源码简单、清晰,结构清除,对于了解任务调度入门有帮助,因此在此对源码阅读总结一下。

综述

java 的Timer是一个定时任务调度控制器, 在java 并行库中的ScheduledExecutorService面世前,java中主要通过Timer应用实现定时时任务调度, 在Timer的定时任务调度框架中主要由Timer, Taskqueue, TimerThread, TimerTask组成,Timer是调度器对外的接口,提供对外的任务添加以及调度中心管理接口,TaskQueue是任务下次执行时间的优先级队列,该优先级队列是小顶堆结构实现的。TimerThread是任务执行的主体 ,每次从任务队列中取出下一个需要执行的任务,在该任务下次执行时间到来时开始执行,TimerTask是一个定时调度任务的抽象类,通过state对任务状态管理。

类关系图

如下图所示,为Timer中各个模块的类图
Alt Timer 主要模块类图

总体时序图

Timer TimerThread TaskQueue 任务执行线程开始作业 获取下一个需要执行的任务 返回任务 loop [ Every minute ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值