ScheduledExecutorService的使用
来源:互联网 发布:java读取文件为字符串 编辑:程序博客网 时间:2024/06/01 08:03
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
1,先从,Executors对象点出一个自己需要的线程实例,Executors有以下诸多获取方式,如图
然后得到一个SchduledExecutorService
2,然后用得到的SchduledExecutorService执行类似Timer.schedule进行轮询操作,
结合Handler进行消息传递,实现想要的轮播等相关操作,类似操作,如图:
大致操作就是这么简单,实践永远是检验对错的唯一途径
0 0
- ScheduledExecutorService的使用
- ScheduledExecutorService的使用
- ScheduledExecutorService的使用
- ScheduledExecutorService的使用
- ScheduledExecutorService的使用
- ScheduledExecutorService的使用
- ScheduledExecutorService的使用
- ScheduledExecutorService的使用
- ScheduledExecutorService的使用
- ScheduledExecutorService的使用
- ScheduledExecutorService定时任务的使用
- Java多线程--ScheduledExecutorService的使用
- ScheduledExecutorService接口的学习和使用
- Timer与ScheduledExecutorService 的使用和区别
- Timer与ScheduledExecutorService的使用和区别
- Java 定时任务 ScheduledExecutorService 的使用
- 使用ScheduledExecutorService周期性的定时任务
- 面试总结(6):ScheduledExecutorService的使用
- 字符串的全排列
- 论骑车穿越美国与实现Postgres的相通之处
- Android 轮播焦点图简单实现
- Zookeeper的安装与HelloWorld
- 空格' 'empty character constant
- ScheduledExecutorService的使用
- Android 阅读源码,让你彻底理解AsyncTask运行原理
- Android 学习之路
- linux环境变量 export命令详解
- 编译ceed(cegui editor)
- EJBCase
- 如何快速离线浏览安卓android开发文档
- 剑指offer--二维数组中的查找
- bzoj3572: [Hnoi2014]世界树