Timer简单学习
来源:互联网 发布:yii2打印sql语句 编辑:程序博客网 时间:2024/06/06 08:46
一、简单使用
new Timer().schedule(new TimerTask() { @Override public void run() { //执行异步任务 }},5000);
以上即一个5s后执行的任务;
更多类似的方法如下:
timer.schedule(new TimerTask(){}, 1000, 3000);// 1秒后启动任务,以后每隔3秒执行一次线程Date date = new Date();timer.schedule(new TimerTask(){},new Date(date.getTime()+1000));//以date为参数,指定某个时间点执行线程
如要和主线程互动操作,则如下:
timer.schedule(new TimerTask() { @Override public void run() { //任务代码...... mHandler.post(new Runnable() { //必须用handler来跟主线程进行通信 然后再处理相关事宜,如要涉及到ui操作,一定要回到主线程来,不然会报错。 @Override public void run() { } }); } } }, 0, 3000);
二、取消
timer.cancel()
三、相关知识解释
Timer是计时器,可以设定成特定时间或特定的时间周期产生信号,不过这里只有Timer是没有用的,必须配合TimerTask才有作用。Timer一旦与某个TimerTask产生关联,就会在产生信号的同时,连带一起执行TimerTask所定义的工作。
所以Timer用于安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行,可以调度TimerTask。TimerTask是一个抽象类,实现了Runnable接口,所以具备了多线程的能力。
TimerTask的实现只需要继承TimerTask类就并实现其run()方法就可以了。run()方法是由我们自己来编写的,把你想做的工作放在里面,一旦Timer在特定时间内或周期产生信号,run()方法就会执行,我们通会Timer的schdeule()方法来设定特定时间或特定的周期。
schdeule()有两种形式:
一个是两个参数的:第一个参数是TimerTask的对象,第二个是时间也可是以Date对象。
一个是三个参数的:具有三个参数的schedule方法可以使一个task在某一个时间后,根据一定的间隔时间运行多次,具有周期性。
最后,可以使用Timer的cancel()方法来停止Timer,调用cancel()之后,两者就会脱离关系。TimerTask本身也有cancel()方法。
注意:
Timer启动的TimerTask是非主线程的,如果在任务完成后要对UI进行操作,那一定要使用
handler.post(new Runnable(){})
来和主线程进行通信。任何有关UI的操作都必须在主线程中执行,如更新数值,弹窗等等。
- Timer简单学习
- 学习:Timer
- Timer学习
- 简单的Timer例子
- Timer,TimerTask简单讲解
- 简单的批处理Timer
- 一个简单的Timer
- Spring timer简单示例
- Timer简单使用
- Timer 简单使用
- Timer控件简单应用
- Timer的简单示例
- 简单介绍Spring Timer
- Timer的简单实现
- timer定时器简单例子
- Java-Timer简单用法
- 简单的Timer
- 简单定时器 Timer
- java学习第十八天之泛型、ArrayList、TreeSet、HashSet、泛型方法,泛型接口、泛型类、泛型的限定
- bzoj1697[Usaco2007 Feb] Cow Sorting牛排序
- iOS开发多线程篇-NSThread
- Hdu-2770 Easy Climb(DP优化)
- iOS开发实时监测网络状态Reachability
- Timer简单学习
- Solr各版本发布时间、对应的JDK版本、Jetty版本
- 什么是Map集合
- SSO单点登录实现原理与总结
- 吉布斯采样
- ACPI和APIC有什么关系?
- RUtils -- 建立在Rserve之上的Java与R语言通信工具集
- tomcat 虚拟目录配置appBase和docBase的区别
- nginx入门