用这个方法, 
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.

解决方案 »

  1.   

    用这个不错,很简单实现。如果楼主想用Timer schedule也可以实现。//想实现的时间任务
    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小时的任务表里。如有问题站内消息咱们继续讨论。
      

  2.   

    郁闷了,上面引用错了。
    应该引用1的:
    用调度框架Quartz很好实现!用这个不错,很简单实现。(推荐) 如果楼主想用Timer schedule也可以实现。 
    ……
    ……还想补充一句:
    Timer schedule需要自己触发,也就是说需要在程序中调用。
    Quartz配好后,server启动就不用管了。
    按照Quartz的思路,需要把这句timer.schedule(yourTask, date);放到plugin里。
    让server启动时自动执行。 
      

  3.   

    Quartz 是什么?没用过呀...
      

  4.   

    quartz 可以用
    "0 0 0 *" 指定每一天的0时0分0秒就行了当然还有别的参数,呵呵!Timer我想你只能自己指定了,第一次运行时间,然后指定周期。
    public void schedule(TimerTask task,
                        Date firstTime,
                        long period)firstTime你自己算好,period就是24小时啦!
      

  5.   

    谢谢各位推荐用quartz,我试了下,代码如下:
    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 * * *"这块怎么写?
      

  6.   

    My God,我知道了,我这个sched没有start,汗..但有另外一个问题,这个sched需要shutdown吗,需要又是什么时候shutdown,我是想保持每天24时跑
      

  7.   


    你的应用shutdown的时候它就shutdown樂.
      

  8.   

    quartz 配置一下 00 00 00 * * ?
      

  9.   


    我想楼主的意思是 每天的24点 执行任务吧。用schedule(TimerTask task, long delay, long period)  delay是延后执行时间,period是间隔时间。 task中的方法就会循环执行了。 你只要先取到系统时间 然后24点 减去这个时间 来得到delay时间,period就是24小时,自己换算。j2se API看看,自己就可以解决了。