• 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实际只开启一个线程,不管调度任务有多少。

  • 相关阅读:
    java面向对象(五)之多态
    java集合(list,set,map)
    jQuery基础
    Numpy详解
    Pandas详解一
    Linux 解压缩
    Linux 磁盘挂载
    Linux 磁盘管理
    su和sudo命令详解
    Linux查看文件命令
  • 原文地址:https://www.cnblogs.com/zby9527/p/7539059.html
Copyright © 2020-2023  润新知