java中的计时器和计时器任务

java中的计时器和计时器任务,java,Java,我想使用Java定时器和TimerTask每天晚上5点做一项工作。 请帮我解决这个问题 我认为以下方法有问题 schedule(TimerTask task, Date time) ----只能为第一天指定日期,不能为forthcomingdays指定日期 schedule(TimerTask task, Date firstTime, long period) ----可以给出初始启动时间和执行时间, 这里,如果我在晚上4点开始我的调度程序,那么如何提及下一次执行时间。如果我设置1小时延迟

我想使用Java定时器和TimerTask每天晚上5点做一项工作。 请帮我解决这个问题

我认为以下方法有问题

schedule(TimerTask task, Date time)
----只能为第一天指定日期,不能为forthcomingdays指定日期

schedule(TimerTask task, Date firstTime, long period)
----可以给出初始启动时间和执行时间, 这里,如果我在晚上4点开始我的调度程序,那么如何提及下一次执行时间。如果我设置1小时延迟,它将在每1小时后调用

schedule(TimerTask task, long delay)
--这不适用于根据开始时间进行操作的情况

schedule(TimerTask task, long delay, long period)

--这不适用于根据开始时间进行操作的系统。

我建议您切换到非常轻且易于使用的系统

schedule(TimerTask task, long delay, long period)
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
//Job1 is scheduled to run everyday evening at 5 O' clock

JobDetail job = newJob(SimpleJob.class)
    .withIdentity("job1", "group1")
    .build();

CronTrigger trigger = newTrigger()
    .withIdentity("trigger1", "group1")
    .withSchedule(cronSchedule("0 0 17 * * ?"))
    .build();

sched.scheduleJob(job, trigger);
试一试


更合适的答案是Grooveek的答案 但作为替代方案

import java.awt.Toolkit;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class demo 
{
  Toolkit toolkit;
  Timer timer;
  public demo()
  {
    toolkit = Toolkit.getDefaultToolkit();
    timer = new Timer();
    timer.schedule(new scheduleDailyTask(), 0, //initial delay
        1 * 1000); //subsequent rate
  }
  class scheduleDailyTask extends TimerTask 
  {
    public void run() 
    {
      Date date = new Date();
      if(date.getHours()==5 && date.getMinutes()==0 && date.getSeconds()==0)
      {
          System.out.println("its 5 O clock");
          System.out.println("run the daily schedule method now");
      }
    }
  }
  public static void main(String args[]) {
    new demo();
  }
}

如果我不想要Quartz Cron,如何处理TimerTask的相同情况?????请让我明白。它对工业是免费的还是什么?因为资金对于公司来说很重要。Quartz Scheduler是根据Apache许可证2.0版授权的。此许可证允许您在商业产品中使用它,而无需免费修改。根据您的自由,但在他们的网站上,他们这样说的原因和内容。注册一个免费的30天TrialX uartz调度程序,包括Quartz Where和Quartz Manager,这是基于开源Quartz项目的商业产品,该项目实际上是用于成千上万企业应用程序的Java作业调度程序。填写下表下载Quartz Scheduler、Quartz Where和Quartz Manager,并获得30天试用许可证。。“Quartz Scheduler是根据Apache许可证2.0版获得许可的。”这句话是直接从中复制粘贴的。它是免费的。Terracotta将基于石英构建的Enterprise产品货币化(例如,具有分布式功能的石英企业不是免费的),但石英库是免费的。根据您的说法,我将在很短的时间内运行计时器,它将检查时间,如果时间匹配,那么它将完成任务。修复了我的示例,以便更容易理解。如果您第一次打印,您将看到2013年1月22日星期二17:00:00 EET。