黑马程序员技术交流社区
标题:
问一下Timer TimerTask 定时器的具体应用场景,最好举个例子
[打印本页]
作者:
abian
时间:
2013-8-1 22:17
标题:
问一下Timer TimerTask 定时器的具体应用场景,最好举个例子
定时器的使用
Timer timer=new Timer("timer");
TimerTask task=new TimerTask() {
@Override
public void run() {
System.out.println("TimerTask....");
}
};
timer.scheduleAtFixedRate(task, 0,1000);
/**
* 每天的晚上一点发送电子邮件
* @param args
*/
public static void main(String[] args) {
Timer timer=new Timer("SendMailTimeTask");
SendMailTimeTask task=new SendMailTimeTask();
Calendar calendar=Calendar.getInstance();
calendar.set(2013,Calendar.JULY ,28, 1,0);
timer.scheduleAtFixedRate(task, calendar.getTime(), 5*1000);
}
Timer类包含的方法有:
1.Timer()
以常规方式运行task
2.Timer(boolean)
true时使用后台进程线程。只要剩下的程序记叙运行,后台进程线程就会执行。
3.public void cancel()
终止Timer的功能执行,但不会对正在执行的任务有影响。当执行cancel方法后将不能再用其分配任务。
4.public void schedule(TimerTask task,Date time)
task被安排在time指定的时间执行,如果时间为过去时则任务立刻执行。
5.public void schedule(TimerTask task, Date firstTime, long period)
task被安排在time指定的时间执行,执行后将每隔period(毫秒)反复执行。
由于规定的时间间隔并不能保证与时钟精准的同不步,执行时间间隔period和前一次执行有关,
所以该方法最适合从短期看保持频率准确是更重要的的地方
和scheduleAtFixedRate(TimerTask task,Date firstTime, long period) 主要区别在于 该时间间隔与前一个相隔 the previous execution
6.public void schedule(TimerTask task, long delay)
task被安排在delay(毫秒)指定的时间后执行。
7.public void schedule(TimerTask task,long delay, long period)
task被安排在delay(毫秒)指定的时间后执行。执行后将每隔period(毫秒)反复执行。
8.public void scheduleAtFixedRate(TimerTask task,Date firstTime, long period)
task被安排在firstTime指定的时间执行。
执行后将每隔period(毫秒)反复执行。每一次重复的时间时和第一次执行而不是和前一次执行有关。因此执行的总速度是固定的。
9.public void scheduleAtFixedRate(TimerTask task,long delay,long period)
task被安排在delay(毫秒)指定的时间后执行。执行后将每隔period(毫秒)反复执行。每一次重复的时间时盒第一次执行而不是和前一次执行有关。因此执行的总速度是固定的。
复制代码
作者:
神之梦
时间:
2013-8-1 23:52
{:soso_e134:}大神你这是在自问自答?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2