每隔15分钟,每天,在特定时间之间运行一个方法

时间:2017-07-12 13:44:18

标签: java timer calendar timezone frequency

我想每天15分钟,伦敦时间08:01:00到16:31之间运行一个方法。

这样的事情:

foo(); //run every 15 mins, everyday, between 08:01:00 and 16:31:00.

public void foo(){
//do stuff
} 

我尝试过使用日历和计时器,但我无法使用它。

感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

我希望我们在这里谈论在JAVA中运行任何工作。 所以,在java中我们有SchedulerFactory根据给它的Cron表达式调度Job。

//Create instance of factory
    SchedulerFactory schedulerFactory=new StdSchedulerFactory();

    //Get schedular
    Scheduler scheduler= schedulerFactory.getScheduler();

    //Create JobDetail object specifying which Job you want to execute
    JobDetail jobDetail=new JobDetail("myJobClass","myJob1",MyJob.class);

    //Associate Trigger to the Job
    CronTrigger trigger=new CronTrigger("cronTrigger","myJob1","0 0/1 * * * ?");

    //Pass JobDetail and trigger dependencies to schedular
    scheduler.scheduleJob(jobDetail,trigger);

    //Start schedular
    scheduler.start();

MyJob.class

public class MyJob implements Job{

      @Override
      public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
                 System.out.println("Your Logic");
        }

    }

现在你的chron工作就像是,

*/15 7-16 * * *

您可以查看有关chrome job Here

的更多信息

我希望这会有所帮助。

答案 1 :(得分:1)

您可以使用quartz-scheduler

我已经使用了一段时间,它完美无缺。

答案 2 :(得分:0)

使用timertask:

https://www.youtube.com/watch?v=36jbBSQd3eU

每1000毫秒运行一次代码(每秒)。然后检查LocalTime.now() - 你的时间。

如果时间为真,则调用您的方法(并将全局布尔变量设置为false)。否则什么都不做。

另一个预见点是线程(在我自己的计算机上)在10秒内运行1 235 102次。时间任务将在10秒内运行10次。

你会在一秒钟之内离开。