码迷,mamicode.com
首页 > 其他好文 > 详细

定时任务为什么不用Timer

时间:2014-08-07 19:16:40      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:android   style   http   color   java   使用   os   io   

在做定时任务的时候,有的同学可能能会用到Timer这个定时任务的辅助类,
但是使用它会有潜在的风险,风险如下,
(1)时间计算不准确问题
    因为Timer是以绝对时间计算定时任务的,会受到系统时间的影响,如果在任务执行期间,更改了系统时间,那么会
导致时间计算不准确问题,导致任务没用按找预定的时间执行。
(2)只能单任务执行
    简单讲就是,只能一次执行一个任务,如果前一个任务没有执行完成,后一个任务是无法并行执行的,只能等待前一个任务执行完成
才能执行。也有可能会出现这样的结果,前一个任务执行的时间太长,后几个任务时间短,可能在一个时间段内执行了多个任务,任务又
没有按照我们要执行的时间执行。
(3)非检查异常导致异步任务终止
    Timer当在执行的过程中遇到非检查异常的时候,会导致本次任务失败,并且接下来的任务也无法被执行,Timer将会终止执行,这不是
我们要的结果,我们需要一套恢复机制。


Java5以后可以用下面的这个类来替代Time,并且解决了以上三个问题
  java.util.concurrent.ScheduledThreadPoolExecutor


那么在Android上呢,可以用 java.util.concurrent.ScheduledThreadPoolExecutor,也可以用Handler机制做,
但是不建议使用Timer

定时任务为什么不用Timer,布布扣,bubuko.com

定时任务为什么不用Timer

标签:android   style   http   color   java   使用   os   io   

原文地址:http://blog.csdn.net/com360/article/details/38420049

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!