1.任務(wù)
Job:是一個接口,只有一個方法void execute(JobExecutionContext context),開發(fā)者實(shí)現(xiàn)該接口定義運(yùn)行任務(wù),JobExecutionContext類別提供了調(diào)度上下文的各種資訊。 Job運(yùn)行時的資訊保存在 JobDataMap實(shí)例中;
2.觸發(fā)器
Trigger:是一個類,描述觸發(fā)Job執(zhí)行的時間觸發(fā)規(guī)則。主要有SimpleTrigger和 CronTrigger這兩個子類別。當(dāng)只需觸發(fā)一次或以固定時間間隔週期執(zhí)行,SimpleTrigger是最適合的選擇;而CronTrigger則可以透過Cron表達(dá)式定義出各種複雜時間規(guī)則的調(diào)度方案:如每早晨9:00執(zhí)行,週一、週三、週五下午5:00執(zhí)行等;
3.調(diào)度器
JobDetail:Quartz在每次執(zhí)行Job時,都重新建立一個Job實(shí)例,所以它不直接接受一個Job的實(shí)例,相反它接收一個Job實(shí)作類,以便在運(yùn)行時透過newInstance()的反射機(jī)制實(shí)例化Job。因此需要透過一個類別來描述Job的實(shí)作類別及其它相關(guān)的靜態(tài)訊息,如Job名字、描述、關(guān)聯(lián)監(jiān)聽器等訊息,JobDetail承擔(dān)了這個角色。
建立一個Quartz工作
1.計(jì)畫實(shí)體類別
/** * *計(jì)劃實(shí)體類 */ public class Plan { private String date; private String task; public Plan(String date, String task) { this.date = date; this.task = task; } public Plan() { } @Override public String toString() { return "Plan [date=" + date + ", task=" + task + "]"; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } public String getTask() { return task; } public void setTask(String task) { this.task = task; } }
2.提醒服務(wù)類別
/** * * @提醒服務(wù)類 * */ public class RemindService { //數(shù)據(jù)查詢 public List<Plan> getPlansForToday(){ List<Plan> list=new ArrayList<Plan>(); Plan p1=new Plan("2016-11-3","呵呵"); Plan p2=new Plan("2016-11-4","嘿嘿"); list.add(p1); list.add(p2); return list; } //提醒服務(wù)類 public void ouputPlan(){ List<Plan> forToday = getPlansForToday(); for (Plan plan : forToday) { System.out.println("計(jì)劃時間"+plan.getDate()+"計(jì)劃內(nèi)容"+plan.getTask()); } } }
3.提醒任務(wù)類別
/** * * @提醒任務(wù)類 * */ public class RemindJob implements Job { private RemindService service=new RemindService(); public void execute(JobExecutionContext arg0) throws JobExecutionException { service.getPlansForToday(); } public RemindService getService() { return service; } public void setService(RemindService service) { this.service = service; } }
4.調(diào)度定時器任務(wù)
3.提醒任務(wù)類別public class TestJob { public static void doRemind() throws SchedulerException, InterruptedException{ //創(chuàng)建一個任務(wù) JobDetail job =JobBuilder.newJob(RemindJob.class).withIdentity("job1", "group1").build(); //創(chuàng)建一個觸發(fā)器 /*Trigger trigger = TriggerBuilder.newTrigger() .withIdentity(TriggerKey.triggerKey("myTrigger", "myTriggerGroup")) .withSchedule(SimpleScheduleBuilder.simpleSchedule() .withIntervalInMilliseconds(2)) .startAt(new Date(System.currentTimeMillis()+2000)) .build();*/ Trigger trigger=TriggerBuilder.newTrigger().withIdentity("myTrigger", "group1"). withSchedule(CronScheduleBuilder.cronSchedule("0 34 16 ? * 5#1 2016")).build(); SchedulerFactory s=new StdSchedulerFactory(); Scheduler scheduler = s.getScheduler(); //注冊并進(jìn)行調(diào)度 scheduler.scheduleJob(job,trigger); //啟動調(diào)度 scheduler.start(); //睡眠10s //Thread.sleep(10000); //關(guān)閉調(diào)度 //scheduler.shutdown(); } public static void main(String[] args) throws SchedulerException, InterruptedException { doRemind(); } }4.調(diào)度定時器任務(wù)
reee

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)