Java多线程--Timer

1 schedule(TimerTask task, Date when)方法

在指定日期执行一次某一任务


  1. 执行任务的时间晚于当前时间,在未来执行的结果
    1.1 假如启动的线程不是守护线程,会一直运行
    1.2 假如启动饿线程是守护线程,则不会执行直接退出
  2. 计划时间早于当前时间,提前运行的结果

立即执行
  • 多个TimerTask任务
    TimerTask是以队列的方式1一个一个被顺序执行的,所以执行的时间与预期的时间不一致
  • 2 scheduleAtFixedRate(TimerTask task, long delay, long period)方法

    在指定的日期之后,按指定的间隔周期性无限循环的执行某一任务

    3 TimerTask的cancel()方法

    将自身从任务列表中清除,其他任务不受影响

    4 Timer的cancel()方法

    将任务列表中的任务全部清除,进程被销毁

    有时并不一定能停止执行计划任务

    5 schedule(TimerTask task, long delay)方法

    以执行schedule方法当前的时间为参考时间,在此基础上延迟指定的毫秒数后执行一次TimerTask任务

    6 schedule(TimerTask task, long delay, long period)方法

    以执行schedule方法当前的时间为参考时间,在此基础上延迟指定的毫秒数,再以某一时间间隔无限次执行某一任务

    7 scheduleAtFixedRate(TimerTask task, long delay, long period)方法

    在延时的情况下,和schedule一样,下次任务执行的时间参考是以上次任务“结束”时间来计算的

    在不延时的情况下
    - schedule:下次任务执行的时间参考是以上次任务“开始”时间来计算的
    - scheduleAtFixedRate:下次任务执行的时间参考是以上次任务“结束”时间来计算的

    你可能感兴趣的:(Java多线程--Timer)