java後端定時任務框架(org.quartz)
阿新 • • 發佈:2018-11-09
//從排程程式工廠獲取一個排程程式的例項 Scheduler scheduler = null; try { scheduler = StdSchedulerFactory.getDefaultScheduler(); //顯示排程程式的名稱(這裡會展示我們在quartz.properties檔案中的名稱) System.out.println("scheduleName = " + scheduler.getSchedulerName()); /** 重要: * 定義一個job,並繫結到我們自定義的HelloJob的class物件 * 這裡並不會馬上建立一個HelloJob例項,例項建立是在scheduler安排任務觸發執行時建立的 * 這種機制也為後面使用Spring整合提供了便利 */ String jobName="TestJob"; String groupName="JobGroup"; JobDetail job = JobBuilder.newJob(TestJob.class) .withIdentity(jobName, groupName) .build(); // 宣告一個觸發器,現在就執行(schedule.start()方法開始呼叫的時候執行);並且每間隔2秒就執行一次 Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("trigger", groupName) .startNow() .withSchedule(simpleSchedule() .withIntervalInSeconds(2) .repeatForever()) .build(); String cron="1/10 * 15 * * ?";//在每天的15點,從1秒開始每隔10秒執行一次 // 基於表示式構建觸發器 CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(cron); CronTrigger cronTrigger=TriggerBuilder.newTrigger().withIdentity(jobName,groupName).withSchedule(cronScheduleBuilder).build(); // 告訴quartz使用定義的觸發器trigger安排執行任務job // scheduler.scheduleJob(job, trigger); scheduler.scheduleJob(job, cronTrigger); //啟動任務排程程式,內部機制是執行緒的啟動 scheduler.start(); } catch (SchedulerException e) { e.printStackTrace(); }
//實現Job介面,任務執行是列印時間 public class TestJob implements Job { @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("TestJob execute___now Time :"+sdf.format(new Date())); } }