有多个不同的cron表达式,对应一个方法,应该怎么写呢?
时间: 2023-07-10 12:04:27 浏览: 210
Cron表达式插件
可以使用Quartz定时任务框架来实现这个需求。
首先,定义一个Job类,实现Quartz的`Job`接口,重写`execute`方法,这个方法就是定时任务的具体执行逻辑。
```java
public class MyJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
// 定时任务的具体执行逻辑
}
}
```
然后,定义多个Trigger,每个Trigger对应一个cron表达式。可以通过CronScheduleBuilder来构建Trigger的cron表达式,例如:
```java
Trigger trigger1 = TriggerBuilder.newTrigger()
.withIdentity("trigger1")
.withSchedule(CronScheduleBuilder.cronSchedule("0 0/1 * * * ?"))
.build();
Trigger trigger2 = TriggerBuilder.newTrigger()
.withIdentity("trigger2")
.withSchedule(CronScheduleBuilder.cronSchedule("0 0 12 * * ?"))
.build();
```
最后,将Job和多个Trigger注册到Scheduler中,Scheduler会根据Trigger的cron表达式来触发Job的执行。完整代码如下:
```java
// 创建Scheduler
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// 创建JobDetail
JobDetail jobDetail = JobBuilder.newJob(MyJob.class)
.withIdentity("myJob")
.build();
// 创建Trigger
Trigger trigger1 = TriggerBuilder.newTrigger()
.withIdentity("trigger1")
.withSchedule(CronScheduleBuilder.cronSchedule("0 0/1 * * * ?"))
.build();
Trigger trigger2 = TriggerBuilder.newTrigger()
.withIdentity("trigger2")
.withSchedule(CronScheduleBuilder.cronSchedule("0 0 12 * * ?"))
.build();
// 注册Job和Trigger
scheduler.scheduleJob(jobDetail, trigger1);
scheduler.scheduleJob(jobDetail, trigger2);
// 启动Scheduler
scheduler.start();
```
这样,就可以实现多个不同的cron表达式,对应一个方法的定时任务了。
阅读全文