java cron表达式 每天执行一次
在Java中,可以使用ScheduledExecutorService
来根据Cron表达式执行任务。但Java标准库本身并不直接支持Cron表达式,因此需要使用第三方库如quartz
来解析Cron表达式。
以下是使用quartz
库实现每天执行一次的Cron表达式的示例代码:
import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.Job;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
public class DailyJob implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
// 要执行的任务代码
System.out.println("任务执行中...");
}
public static void main(String[] args) throws SchedulerException, InterruptedException {
// 创建Scheduler
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
// 创建JobDetail
JobDetail jobDetail = JobBuilder.newJob(DailyJob.class)
.withIdentity("dailyJob", "group1")
.build();
// 创建CronTrigger
CronTrigger trigger = TriggerBuilder.newTrigger()
.withIdentity("dailyTrigger", "group1")
.withSchedule(CronScheduleBuilder.cronSchedule("0 0 0 * * ?")) // 每天凌晨执行
.build();
// 计划任务
scheduler.scheduleJob(jobDetail, trigger);
// 启动Scheduler
scheduler.start();
// 运行一段时间后关闭Scheduler
Thread.sleep(60L * 60L * 1000L); // 睡眠1小时
scheduler.shutdown(true);
}
}
在这个例子中,DailyJob
类实现了Job
接口,其execute
方法包含了要执行的任务代码。我们使用StdSchedulerFactory
创建了一个Scheduler
实例,并为DailyJob
类创建了一个JobDetail
。然后,我们创建了一个CronTrigger
,其Cron表达式设置为每天凌晨执行("0 0 0 ?")。最后,我们将这个任务安排给Scheduler,并启动它。
请注意,这个例子使用了quartz
库,因此你需要在项目的依赖管理文件中(如pom.xml
)添加quartz
的依赖。
评论已关闭