Java Timer和Quartz都是用于调度任务的工具。Java Timer是Java标准库自带的一个定时器类,而Quartz则是一个完整的作业调度框架。两者的主要区别在于灵活性和功能的丰富程度。
import java.util.Timer; import java.util.TimerTask; public class TimerExample { public static void main(String[] args) { Timer timer = new Timer(); TimerTask task = new TimerTask() { public void run() { System.out.println("Hello World!"); } }; timer.schedule(task, 5000); } }
上面的示例演示了如何使用Java Timer延迟5秒钟运行任务。它是一个简单而有效的方式,但是它缺乏调度复杂任务所需的高级功能。
import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.impl.StdSchedulerFactory; import static org.quartz.JobBuilder.newJob; import static org.quartz.TriggerBuilder.newTrigger; import static org.quartz.CronScheduleBuilder.cronSchedule; public class QuartzExample implements Job { public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("Hello World!"); } public static void main(String[] args) throws SchedulerException { Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); scheduler.start(); JobDetail job = newJob(QuartzExample.class) .withIdentity("myJob", "group1") .build(); Trigger trigger = newTrigger() .withIdentity("myTrigger", "group1") .withSchedule(cronSchedule("0/5 * * * * ?")) .build(); scheduler.scheduleJob(job, trigger); } }
上面的示例演示了如何使用Quartz每5秒钟运行一次任务。Quartz可以使用CRON表达式来调度任务,这使得它非常灵活,并且可以针对不同的任务进行微调和自定义。