gpt4 book ai didi

java - 每周在特定时间运行一次方法

转载 作者:行者123 更新时间:2023-12-01 13:38:53 24 4
gpt4 key购买 nike

我到处找遍了。我查看了 Timers 和 Quartz,但仍然很困惑。

我有一个巨大的类执行不同的方法。这些方法之一是同步方法:

  public void onSynch()
{
String environment = validateEnvironment(env2);
if (environment == null) return;
try
{
RAT.synchronize(environment);
onSelectEnv();
}
catch (Exception e)
{
// TODO: tell user, log
}
}

我需要能够创建一个计时器,每周在特定时间(例如每周五和下午 3:00)单独触发此方法一次。我无法创建单独的类。

我需要能够将调度程序放入此方法中,或者在其旁边创建另一个方法来创建调度程序并运行该同步方法。

最佳答案

我建议使用 QUARTZSpring Batch 进行调度程序作业。

尝试下面的Quartz 示例。引用:CronTrigger Tutorial , Example

你的Job.java

public class YourJob implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
//here your operation
}
}

MySchedule.java

public class MySchedule {
public void startUp() throws Exception {
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler scheduler = sf.getScheduler();

JobDetail yourJob = JobBuilder.newJob(YourJob.class).withIdentity("job1", "group1").build();

/*Run every 30 seconds on Weekdays (Monday through Friday)*/
Trigger trigger_1 = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1")
.withSchedule(CronScheduleBuilder.cronSchedule("0,30 * * ? * MON-FRI"))
.build();

/*Run at 10am on the 1st and 15th days of the month*/
Trigger trigger_2 = TriggerBuilder.newTrigger()
.withIdentity("trigger2", "group1")
.withSchedule(CronScheduleBuilder.cronSchedule("0 0 10am 1,15 * ?"))
.build();

/*Run at 3:30PM of every friday f month*/
Trigger trigger_3 = TriggerBuilder.newTrigger()
.withIdentity("trigger3", "group1")
.withSchedule(CronScheduleBuilder.cronSchedule("0 18 30 ? * 6"))
.build();

scheduler.start();

scheduler.scheduleJob(yourJob, trigger_1);
scheduler.scheduleJob(yourJob, trigger_2);
scheduler.scheduleJob(yourJob, trigger_3);

}
}

关于java - 每周在特定时间运行一次方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21013983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com