在Java分布式环境中,可以使用Quartz框架来实现定时任务。以下是一个简单的示例代码:
- 首先,需要创建一个Job类,该类实现org.quartz.Job接口,并重写execute方法,用于定义定时任务的具体逻辑。
public class MyJob implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("定时任务执行了!");
}
}
- 然后,需要创建一个Trigger触发器,指定定时任务的执行规则,例如每隔10秒钟执行一次。
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(10)
.repeatForever())
.build();
- 接着,创建一个Scheduler调度器,将Job和Trigger添加到调度器中。
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
JobDetail job = JobBuilder.newJob(MyJob.class)
.withIdentity("job1", "group1")
.build();
scheduler.scheduleJob(job, trigger);
- 最后,启动调度器,开始执行定时任务。
scheduler.start();
完整代码如下:
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
public class Main {
public static void main(String[] args) throws Exception {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// define the job and tie it to our MyJob class
JobDetail job = JobBuilder.newJob(MyJob.class)
.withIdentity("job1", "group1")
.build();
// Trigger the job to run now, and then repeat every 10 seconds
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(10)
.repeatForever())
.build();
// Tell quartz to schedule the job using our trigger
scheduler.scheduleJob(job, trigger);
// Start up the scheduler (nothing can actually run until the scheduler has been started)
scheduler.start();
}
}
class MyJob implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("定时任务执行了!");
}
}