我是靠谱客的博主 伶俐睫毛,最近开发中收集的这篇文章主要介绍ScheduledExecutorService的使用 ScheduledExecutorService,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

ScheduledExecutorService


在使用SchduledExecutorService之前,我们更常用的是Timer 结合TimerTask进行类似定时任务的操作,但是每次在使用没接触过的东西时,总是会先去网上查证一下,以确认找到更好的直接使用,下面也先copy下前人分享的经验吧。

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

SchduledExecutorService一般用法就是
1,先从,Executors对象点出一个自己需要的线程实例,Executors有以下诸多获取方式,如图

然后得到一个SchduledExecutorService 

2,然后用得到的SchduledExecutorService执行类似Timer.schedule进行轮询操作,
结合Handler进行消息传递,实现想要的轮播等相关操作,类似操作,如图:

大致操作就是这么简单,实践永远是检验对错的唯一途径

最后

以上就是伶俐睫毛为你收集整理的ScheduledExecutorService的使用 ScheduledExecutorService的全部内容,希望文章能够帮你解决ScheduledExecutorService的使用 ScheduledExecutorService所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部