用这个方法,
public void schedule(TimerTask task,
Date firstTime,
long period)Parameters:
task - task to be scheduled.
firstTime - First time at which task is to be executed.
period - time in milliseconds between successive task executions.
public void schedule(TimerTask task,
Date firstTime,
long period)Parameters:
task - task to be scheduled.
firstTime - First time at which task is to be executed.
period - time in milliseconds between successive task executions.
public class YourTimeTask entends TimerTask{
public void run(){
…… //操作任务
timer.schedule(yourTask, 任意时间+24小时); //见后面分解
}
}Timer timer = new Timer();
timer.schedule(yourTask, 任意时间); //这个任务只会被执行一次
//如果执行该语句的时候,当前时间已经大于任务时间,yourTask会立即执行沿着这个思路,调用yourTask执行完你需要的业务的时候,再起一个任务(可以是自己),把时间推到24小时候。
以此类推,每当24小时候执行yourTask,完事后又会把自己写入下个24小时的任务表里。如有问题站内消息咱们继续讨论。
应该引用1的:
用调度框架Quartz很好实现!用这个不错,很简单实现。(推荐) 如果楼主想用Timer schedule也可以实现。
……
……还想补充一句:
Timer schedule需要自己触发,也就是说需要在程序中调用。
Quartz配好后,server启动就不用管了。
按照Quartz的思路,需要把这句timer.schedule(yourTask, date);放到plugin里。
让server启动时自动执行。
"0 0 0 *" 指定每一天的0时0分0秒就行了当然还有别的参数,呵呵!Timer我想你只能自己指定了,第一次运行时间,然后指定周期。
public void schedule(TimerTask task,
Date firstTime,
long period)firstTime你自己算好,period就是24小时啦!
SchedulerFactory factory = new StdSchedulerFactory();
Scheduler sched = factory.getScheduler();
JobDetail job = new JobDetail("job1","group1",MyTask.class);
CronTrigger trigger = new CronTrigger("trigg1","group1","job1","group1","0 0 0 * * *");
Date date = sched.scheduleJob(job,trigger);但我想设置成每天0点执行我的MyTask任务,怎么不执行呢,"0 0 0 * * *"这块怎么写?
你的应用shutdown的时候它就shutdown樂.
我想楼主的意思是 每天的24点 执行任务吧。用schedule(TimerTask task, long delay, long period) delay是延后执行时间,period是间隔时间。 task中的方法就会循环执行了。 你只要先取到系统时间 然后24点 减去这个时间 来得到delay时间,period就是24小时,自己换算。j2se API看看,自己就可以解决了。