概述
ScheduledExecutorService
java.util.Timer计时器有管理任务延迟执行("如1000ms后执行任务")以及周期性执行("如每500ms执行一次该任务")。
但是,Timer存在一些缺陷,因此你应该考虑使用ScheduledThreadPoolExecutor作为代替品,Timer对调度的支持是基于绝对时间,而不是相对时间的,
由此任务对系统时钟的改变是敏感的;ScheduledThreadExecutor只支持相对时间。
Timer的另一个问题在于,如果TimerTask抛出未检查的异常,Timer将会产生无法预料的行为。
Timer线程并不捕获异常,所以TimerTask抛出的未检查的异常会终止timer线程。
这种情况下,Timer也不会再重新恢复线程的执行了;它错误的认为整个Timer都被取消了。
此时,已经被安排但尚未执行的TimerTask永远不会再执行了,新的任务也不能被调度了。
个人总结:timer的bug:60秒执行一次的话,如果用户修改了时间的话 那么时针都会归0,本来是临近10秒执行的时候timer又会重新计时一次 再等60才执行。
实例请参照:
http://www.cnblogs.com/androidez/archive/2013/03/12/2955842.html
最后
以上就是伶俐睫毛为你收集整理的ScheduledExecutorService的使用 ScheduledExecutorService的全部内容,希望文章能够帮你解决ScheduledExecutorService的使用 ScheduledExecutorService所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复