上面介绍的 TimingWheel 提供了添加延时任务和推进时间轮指针的操作,而具体执行延时任务的操作则交由定时器 SystemTimer 完成。SystemTimer 类实现了 Timer 特质,该特质描绘了定时器应该具备的基本方法。Timer 接口定义了管理延迟操作的方法,而 SystemTimer 是实现延迟操作的关键代码。
Timer 接口类
Timer 接口定义如下:
trait Timer {
/**
* Add a new task to this executor. It will be executed after the task's delay
* (beginning from the time of submission)
* @param timerTask the task to add
*/
// 将给定的定时任务插入到时间轮上,等待后续延迟执行
def add(timerTask: TimerTask): Unit
/**
* Advance the internal clock, executing any tasks whose expiration has been
* reached within the duration of the passed timeout.
* @param timeoutMs
* @return whether or not any tasks were executed
*/
// 向前推进时钟,执行已达过期时间的延迟任务
def advanceClock(timeoutMs: Long): Boolean
/**
* Get the number of tasks pending execution
* @return the number of tasks
*/
// 获取时间轮上总的定时任务数
def size: Int
/**