每周运行一次计时器

时间:2014-04-14 07:14:47

标签: java timer scheduled-tasks

我想获得每周运行一次的java.util.Timer个实例。例如;它应该每周二运行。 此代码不符合我的要求。

java.util.Timer timer = new java.util.Timer();
Calendar date1 = Calendar.getInstance();
date1.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
date1.set(Calendar.HOUR, 1);
date1.set(Calendar.MINUTE, 0);
date1.set(Calendar.SECOND, 0);
timer.schedule(new MyTimer(), date1.getTime(), TimeUnit.DAYS.toMillis(7));

我在所有问题中都搜索过它,但没有答案。 使用java.util.Timer不可能吗?

提前致谢, 最好的问候。

2 个答案:

答案 0 :(得分:1)

看一下Quartz:

http://quartz-scheduler.org/

它有更好,更简洁的方式来实现你想要的东西。

看看这个例子:

http://quartz-scheduler.org/documentation/quartz-2.2.x/examples/Example3

如果您出于某种原因不喜欢Quartz,可以使用内置的ScheduledExecutorService:

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledExecutorService.html

答案 1 :(得分:0)

 java.util.Timer timer = new java.util.Timer();
 Calendar date1 = Calendar.getInstance();
 date1.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
 date1.set(Calendar.HOUR, 1);
 date1.set(Calendar.MINUTE, 0);
 date1.set(Calendar.SECOND, 0);
 timer.schedule(new MyTimer(), date1.getTime(), TimeUnit.DAYS.toMillis(7));

实际上,您尝试在此TimeUnit.DAYS.toMillis(7)指定时间的间隔内安排TIMER对象。

如果您想在特定日期安排工作。创建另一个计划调度程序的调度程序

   timer.schedule(timerObj,desiredDate)