加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

示例 Groovy中的 Timer 和 TimerTask

发布时间:2020-12-14 16:47:46 所属栏目:大数据 来源:网络整理
导读:import?java.util.timer.*class?TimerTaskExample?extends?TimerTask?{????????public?void?run()?{????????println?new?Date()????????}}int?delay?=?5000???//?delay?for?5?sec.int?period?=?1000??//?repeat?every?sec.Timer?timer?=?new?Timer()timer.sc
import?java.util.timer.*

class?TimerTaskExample?extends?TimerTask?{
????????public?void?run()?{
????????	println?new?Date()
????????}
}

int?delay?=?5000???//?delay?for?5?sec.
int?period?=?1000??//?repeat?every?sec.
Timer?timer?=?new?Timer()
timer.scheduleAtFixedRate(new?TimerTaskExample(),?delay,?period)

输出:

Thu?Apr?02?05:54:02?CST?2015
Thu?Apr?02?05:54:03?CST?2015
Thu?Apr?02?05:54:04?CST?2015
Thu?Apr?02?05:54:05?CST?2015
Thu?Apr?02?05:54:06?CST?2015
Thu?Apr?02?05:54:07?CST?2015
Thu?Apr?02?05:54:08?CST?2015
Thu?Apr?02?05:54:09?CST?2015
Thu?Apr?02?05:54:10?CST?2015
Thu?Apr?02?05:54:11?CST?2015
Thu?Apr?02?05:54:12?CST?2015

Java 版本:

import?java.util.Timer;
import?java.util.Date;

class?TimerTaskTest?extends?java.util.TimerTask?{

	@Override
	public?void?run()?{
		System.out.println(new?Date());
	}
}
public?class?Test?{
	public?static?void?main(String[]?args)?{
		int?delay?=?5000;???//?delay?for?5?sec.
		int?period?=?1000;??//?repeat?every?sec.
		Timer?timer?=?new?Timer();
		timer.schedule(new?TimerTaskTest(),?period);
	}
}

关于 Timer 和 TimerTask 的使用说明:

java.util.Timer?timer?=?new?java.util.Timer(true);?
//?true?说明这个timer以daemon方式运行(优先级低,?
//?程序结束timer也自动结束),注意,javax.swing?
//?包中也有一个Timer类,如果import中用到swing包,?
//?要注意名字的冲突。?

TimerTask?task?=?new?TimerTask()?{?
public?void?run()?{?
...?//每次需要执行的代码放到这里面。?
}?
};?

//以下是几种调度task的方法:?

timer.schedule(task,?time);?
//?time为Date类型:在指定时间执行一次。?

timer.schedule(task,?firstTime,?period);?
//?firstTime为Date类型,period为long?
//?从firstTime时刻开始,每隔period毫秒执行一次。?

timer.schedule(task,?delay)?
//?delay?为long类型:从现在起过delay毫秒执行一次?

timer.schedule(task,?period)?
//?delay为long,period为long:从现在起过delay毫秒以后,每隔period?
//?毫秒执行一次。

注意:timer.schedule(task,delay,period) 和 timer.scheduleAtFixedRate(task,period) 有所不同。

前者的period是相对于前一次执行时间。而后者的period是严格按照第一次执行时间依次类推。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读