使用Timer执行定时任务
2015-12-31 21:36
411 查看
一、Timer概述
在Java开发中,会碰到一些需要定时或者延时执行某些任务的需求,这时,我们可以使用Java中的Timer类实现。
二、Timer介绍
[/code]
三、Timer常用方法
在特定时间执行任务,只执行一次
在特定时间之后执行任务,只执行一次
指定第一次执行的时间,然后按照间隔时间,重复执行
在特定延迟之后第一次执行,然后按照间隔时间,重复执行
[/code]
第一次执行之后,特定频率执行,与3效果相同
[/code]
在delay毫秒之后第一次执行,后按照特定频率执行
[/code]
Timer注销
[/code]
四、Timer使用示例
使用Timer每隔2秒打印一次数据,并且任务在Timer启动1秒之后开始
[/code]
使用Timer每隔一段时间随机生成数字
[/code]
五、小结
通过上面的两个简单示例,我们可以很清楚的知道Timer的用法:
实现TimerTask接口,并即为单元任务,我们的单次运行业务逻辑写在这里面
实例化一个Timer对象,用于启动TimerTask任务,并通过调用不同的方法设置任务的执行时间、频率
在实际的应用中,Timer多用于在夜间处理比较耗时并且数据状态稳定时候的一些后台操作,例如数据统计、数据备份等。
在Java开发中,会碰到一些需要定时或者延时执行某些任务的需求,这时,我们可以使用Java中的Timer类实现。
二、Timer介绍
Timer是一个定时器类,通过该类可以为指定的定时任务进行配置,所在jar包路径:java.util.TimerTimer定时器实例有多种构造方法:Timer()// 创建一个新计时器Timer(boolean isDaemon)//创建一个新计时器,可以指定其相关的线程作为守护程序运行Timer(String name)//创建一个新计时器,其相关的线程具有指定的名称Timer(String name,boolean isDaemon)//创建一个新计时器,其相关的线程具有指定的名称,并且可以指定作为守护程序运行TimerTask类是一个定时任务类,该类实现了Runnable接口,而且是一个抽象类,所在jar包路径:java.util.TimerTask// 可以通过继承该类,来实现自己的定时任务。publicabstractclassTimerTaskimplementsRunnable
[/code]
三、Timer常用方法
在特定时间执行任务,只执行一次
public void schedule(TimerTask task,Date time)
在特定时间之后执行任务,只执行一次
public void schedule(TimerTask task, long delay)
指定第一次执行的时间,然后按照间隔时间,重复执行
public void schedule(TimerTask task, Date firstTime, long period)
在特定延迟之后第一次执行,然后按照间隔时间,重复执行
publicvoid schedule(TimerTask task,long delay,long period)/*参数说明 delay: 延迟执行的毫秒数,即在delay毫秒之后第一次执行 period:重复执行的时间间隔 */
[/code]
第一次执行之后,特定频率执行,与3效果相同
publicvoid scheduleAtFixedRate(TimerTask task,Date firstTime,long period)
[/code]
在delay毫秒之后第一次执行,后按照特定频率执行
publicvoid scheduleAtFixedRate(TimerTask task,long delay,long period)
[/code]
Timer注销
timer.cancel();
[/code]
schedule()和scheduleAtFixedRate()的区别
schedule()方法更注重保持间隔时间的稳定:保障每隔period时间可调用一次
scheduleAtFixedRate()方法更注重保持执行频率的稳定:保障多次调用的频率趋近于period时间,如果任务执行时间大于period,会在任务执行之后马上执行下一次任务
四、Timer使用示例
使用Timer每隔2秒打印一次数据,并且任务在Timer启动1秒之后开始
import java.util.Timer;import java.util.TimerTask;publicclassTestTimer{publicstaticvoid main(String[] args){Timer timer =newTimer(); timer.schedule(newMyTask(),1000,2000);}}classMyTaskextendsTimerTask{@Overridepublicvoid run(){System.out.println("每隔2秒我就出现一次……");}}
[/code]
使用Timer每隔一段时间随机生成数字
import java.util.Timer;import java.util.Random;import java.util.TimerTask;publicclassTimerTest{publicstaticvoid main(String[] args){Timer timer =newTimer();NewTimerTask timerTask =newNewTimerTask();//程序运行后立刻执行任务,每隔100ms执行一次 timer.schedule(timerTask,0,100);}}classNewTimerTaskextendsTimerTask{@Overridepublicvoid run(){ createRandomNumber(); createRandomNumberFromMathRandom();}//用纯Math中的方法来随机生成1-10之间的随机数privatevoid createRandomNumberFromMathRandom(){int j =(int)(Math.round(Math.random()*10+1));System.out.println("随机生成的数字为:"+j);}//用Random类的方式来随机生成1-10之间的随机数privatevoid createRandomNumber(){Random random =newRandom(System.currentTimeMillis());int value = random.nextInt(); value =Math.abs(value); value = value%10+1;System.out.println("新生成的数字为:"+ value);}}
[/code]
五、小结
通过上面的两个简单示例,我们可以很清楚的知道Timer的用法:
实现TimerTask接口,并即为单元任务,我们的单次运行业务逻辑写在这里面
实例化一个Timer对象,用于启动TimerTask任务,并通过调用不同的方法设置任务的执行时间、频率
在实际的应用中,Timer多用于在夜间处理比较耗时并且数据状态稳定时候的一些后台操作,例如数据统计、数据备份等。
相关文章推荐
- 20151231 OCP 053 90-120
- ubuntu下android studio生成的unaligned apk的zipalign处理
- combobox自己主动提示组件加入无选中项清空功能
- Android自定义属性时format选项可以取用的值
- Android打造listview万能适配器(下)
- UNIX环境高级编程——进程(二)
- Hadoop集群安装(四)--------CentOS基本配置
- springmvc(2)Controller源码简单解析
- 详解Paint的各种set方法
- 《寻龙诀》背后的动作捕捉技术 诺亦腾
- <LeetCode OJ>Implement Queue using Stacks【232】
- BZOJ 3439: Kpm的MC密码( trie + DFS序 + 主席树 )
- Java I/O流概念
- Day6-二维数组,冒泡排序解析,数组为参数的传递
- 写在2015年最后一天
- Android打包提示Export Aborted
- setValue: forKey 和 setObject: forkey的区别
- 水仙花 - %的两种用法
- lvm2
- c++基本知识(1)