(一)Quartz單機
1.Quartz簡介
Quartz是一個完全由java編寫的開源作業(yè)調(diào)度框架,能實現(xiàn)業(yè)務(wù)的定時調(diào)度。Quartz主要有三個核心調(diào)度器、任務(wù)和觸發(fā)器:
①任務(wù)-JobDetail:Quartz在任務(wù)調(diào)度的時候,需要創(chuàng)建一個任務(wù)實例,JobDetail正是承擔這個角色。在Quartz2.0以前的版本中,創(chuàng)建一個任務(wù)通過new JobDetail(String jobName, String gruop, Class jobCLass)這個方法來創(chuàng)建,在2.0之后的版本中通過JobBuilder來創(chuàng)建任務(wù)。Job接口中只有一個方法void execute(JobExecutionContext context) throws JobExecutionException,因此在任務(wù)調(diào)度時,只需要實現(xiàn)execute方法就可以了,使用起來很方便。
②觸發(fā)器-Trigger:定義Job的執(zhí)行時間、次數(shù)等信息,有SimpleTrigger和CronTrigger兩種類型。當你需要的是一次性的調(diào)度,或者你需要在指定的時間激活某個任務(wù)并執(zhí)行N次,設(shè)置每次任務(wù)執(zhí)行的間隔時間T。那此時使用SimpleTrigger將是非常方便的。如果你想在每周的周一7:00或者每月的第2,3天實現(xiàn)任務(wù)調(diào)度,這時候就需要用到CronTrigger,CronTrigger能夠提供復(fù)雜的觸發(fā)器表達式滿足我們的需求。同時需要提到的一點是Quartz還提供很多日期的實現(xiàn)類DateBuilder等,在實際使用中很方便。
③調(diào)度器-Scheduler:Quartz框架的核心是調(diào)度器。調(diào)度器負責管理Quartz應(yīng)用運行時環(huán)境。調(diào)度器不是靠自己做所有的工作,而是依賴框架內(nèi)一些非常重要的部件。Quartz不僅僅是線程和線程管理。為確??缮炜s性,Quartz采用了基于多線程的架構(gòu)。啟動時,框架初始化一套worker線程,這套線程被調(diào)度器用來執(zhí)行預(yù)定的作業(yè)。這就是Quartz怎樣能并發(fā)運行多個作業(yè)的原理。Quartz依賴一套松耦合的線程池管理部件來管理線程環(huán)境。
2.搭建Quartz工程
①創(chuàng)建一個新工程
新建文件lib作為外部jar包,Quartz最新版本通過官網(wǎng)可以下載http://www.quartz-scheduler.org/downloads/。導(dǎo)入你下載的quartz包,新建package為com.example.singleQuartz,里面就兩個簡單的類SingleQuartzJob和SingleQuartzServer。SingleQuartzJob定義Job的實現(xiàn)類,SingleQuartzServer任務(wù)調(diào)度服務(wù)。
②SingleQuartzJob.java定義