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表達式來調度任務,這使得它非常靈活,并且可以針對不同的任務進行微調和自定義。