美文网首页
Timer与timeTask 定时执行

Timer与timeTask 定时执行

作者: lothar_cly | 来源:发表于2016-03-25 17:40 被阅读319次

    timer是一种定时器工具,用来在一个后台线程中执行指定任务。它可以计划执行一个任务一次或者反复多次。TimeTask一个抽象类,他的子类代表一个可以被Timer计划的任务。


    使用Timer中的schedule()方法定制执行方案(图上的意思是5秒后执行,以后每隔5秒执行一次。)具体的方法实现再讨论。
    Timer线程的终止。默认情况下只要一个程序的timer线程在运行,那么这个程序会保持运行。当然有四种方案可以用来终止一个timer线程。
    1.调用timercancle方法。可以在程序的任何地方调用此方法。甚至可以在timerTaskrun方法中。
    2.让timer线程成为一个守护线程(所谓的守护线程就是运行在程序后台的线程,在Java中的定义是:如果虚拟机中只有daemon线程在运行,那么虚拟机退出)。可以在创建timer时使用new Timer(true)达到这个目的。
    3.当timer相关的所有task执行完毕以后,删除所有此timer对象的引用(置为NULL)。这样timer线程也会终止。
    4.调用system.exit()方法,使整个程序终止。

    TimerschedulescheduleAtFixedRate之间的区别。

    前者之间的间隔如果前一个任务没有按时完成,那么后一个任务同样会间隔步长再执行,而后者中前一个任务完成后(没有按时完成),会立马执行下一个任务(最大限度的压缩间隔时间)。
    1.每个Timer仅对应唯一一个线程。
    2.Timer不保证任务执行的十分精确
    3.Timer类的线程是安全的。

    相关文章

      网友评论

          本文标题:Timer与timeTask 定时执行

          本文链接:https://www.haomeiwen.com/subject/yfhdlttx.html