Timer分析

学而时习之,不亦说乎!

                             --《论语》


Java的JDK中自带的任务调度实现。简单易用,源码也很清晰,总共由四个类组成,都在Timer.java一个文件中,看完总结如下:

abstract class TimerTask implements Runnable
    --long nextExecutionTime//下一次执行时间,用于优先级队列排序
    --long period//每次执行时间间隔
class TaskQueue//优先级队列,使用二叉堆算法
    --TimerTask[] queue//存放所有任务
    --void add(TimerTask task)
    --TimerTask getMin()
    --void removeMin()
class TimerThread extends Thread
    --TaskQueue queue//保存任务的优先级队列
public class Timer
    --TaskQueue queue = new TaskQueue()
    --TimerThread thread = new TimerThread(queue)
    --public Timer(String name, boolean isDaemon) //启动线程
    --private void sched(TimerTask task, long time, long period)//把任务加入到队列中

创建Timer对象时启动了TimerThread线程,我们调用Timer的scheduleXX()方法时,TimerTask被加入TaskQueue,TimerThread线程开始遍历TaskQueue,调用TimerTask的run方法。

注意:

1)TaskQueue是使用二叉堆算法的优先级队列。

2)TimerTask实现Runnable接口,只是为了我们把业务代码写到一个固有方法中,在TimerThread线程run方法中直接调用,并不是给Thread当成target使用,因为一个Timer实际只开启一个线程,不管调度任务有多少。

转载于:https://www.cnblogs.com/zby9527/p/7539059.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值