亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

實現quartz定時器及quartz定時器原理介紹

2019-11-26 15:51:25
字體:
來源:轉載
供稿:網友

一、核心概念
 
Quartz的原理不是很復雜,只要搞明白幾個概念,然后知道如何去啟動和關閉一個調度程序即可。

1、Job
表示一個工作,要執行的具體內容。此接口中只有一個方法
void execute(JobExecutionContext context)

2、JobDetail
JobDetail表示一個具體的可執行的調度程序,Job是這個可執行程調度程序所要執行的內容,另外JobDetail還包含了這個任務調度的方案和策略。

3、Trigger代表一個調度參數的配置,什么時候去調。

4、Scheduler代表一個調度容器,一個調度容器中可以注冊多個JobDetail和Trigger。當Trigger與JobDetail組合,就可以被Scheduler容器調度了。

二、一個最簡單入門實例

復制代碼 代碼如下:

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

import java.util.Date;

/**
* quartz定時器測試
*
* @author leizhimin 2009-7-23 8:49:01
*/
public class MyJob implements Job {
        public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
                System.out.println(new Date() + ": doing something...");
        }
}

class Test {
        public static void main(String[] args) {
                //1、創建JobDetial對象
                JobDetail jobDetail = new JobDetail();
                //設置工作項
                jobDetail.setJobClass(MyJob.class);
                jobDetail.setName("MyJob_1");
                jobDetail.setGroup("JobGroup_1");

                //2、創建Trigger對象
                SimpleTrigger strigger = new SimpleTrigger();
                strigger.setName("Trigger_1");
                strigger.setGroup("Trigger_Group_1");
                strigger.setStartTime(new Date());
                //設置重復停止時間,并銷毀該Trigger對象
                java.util.Calendar c = java.util.Calendar.getInstance();
                c.setTimeInMillis(System.currentTimeMillis() + 1000 * 1L);
                strigger.setEndTime(c.getTime());
                strigger.setFireInstanceId("Trigger_1_id_001");
                //設置重復間隔時間
                strigger.setRepeatInterval(1000 * 1L);
                //設置重復執行次數
                strigger.setRepeatCount(3);

                //3、創建Scheduler對象,并配置JobDetail和Trigger對象
                SchedulerFactory sf = new StdSchedulerFactory();
                Scheduler scheduler = null;
                try {
                        scheduler = sf.getScheduler();
                        scheduler.scheduleJob(jobDetail, strigger);
                        //4、并執行啟動、關閉等操作
                        scheduler.start();

                } catch (SchedulerException e) {
                        e.printStackTrace();
                }
//                try {
//                        //關閉調度器
//                        scheduler.shutdown(true);
//                } catch (SchedulerException e) {
//                        e.printStackTrace();
//                }
        }
}

執行結果:


當把結束時間改為:

復制代碼 代碼如下:

//設置重復停止時間,并銷毀該Trigger對象
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTimeInMillis(System.currentTimeMillis() + 1000 * 1L);
strigger.setEndTime(c.getTime());

執行結果:

當添加一條關閉調度器的語句:
//4、并執行啟動、關閉等操作
scheduler.start();
scheduler.shutdown(true);


程序執行結果:
Thu Jul 23 10:11:50 CST 2009: doing something...

Process finished with exit code 0
僅僅執行了一次,這一次能執行完,原因是設定了scheduler.shutdown(true);true表示等待本次任務執行完成后停止。

從這里也可以看出,scheduler是個容器,scheduler控制jobDetail的執行,控制的策略是通過trigger。

當scheduler容器啟動后,jobDetail才能根據關聯的trigger策略去執行。當scheduler容器關閉后,所有的jobDetail都停止執行。

三、透過實例看原理

通過研讀Quartz的源代碼,和本實例,終于悟出了Quartz的工作原理。

1、scheduler是一個計劃調度器容器(總部),容器里面可以盛放眾多的JobDetail和trigger,當容器啟動后,里面的每個JobDetail都會根據trigger按部就班自動去執行。

2、JobDetail是一個可執行的工作,它本身可能是有狀態的。

3、Trigger代表一個調度參數的配置,什么時候去調。

4、當JobDetail和Trigger在scheduler容器上注冊后,形成了裝配好的作業(JobDetail和Trigger所組成的一對兒),就可以伴隨容器啟動而調度執行了。

5、scheduler是個容器,容器中有一個線程池,用來并行調度執行每個作業,這樣可以提高容器效率。

6、將上述的結構用一個圖來表示,如下:
 


四、總結

1、搞清楚了上Quartz容器執行作業的的原理和過程,以及作業形成的方式,作業注冊到容器的方法。就認識明白了Quartz的核心原理。

2、Quartz雖然很龐大,但是一切都圍繞這個核心轉,為了配置強大時間調度策略,可以研究專門的CronTrigger。要想靈活配置作業和容器屬性,可以通過Quartz的properties文件或者XML來實現。

3、要想調度更多的持久化、結構化作業,可以通過數據庫讀取作業,然后放到容器中執行。

4、所有的一切都圍繞這個核心原理轉,搞明白這個了,再去研究更高級用法就容易多了。

5、Quartz與Spring的整合也非常簡單,Spring提供一組Bean來支持:MethodInvokingJobDetailFactoryBean、SimpleTriggerBean、SchedulerFactoryBean,看看里面需要注入什么屬性即可明白了。Spring會在Spring容器啟動時候,啟動Quartz容器。

6、Quartz容器的關閉方式也很簡單,如果是Spring整合,則有兩種方法,一種是關閉Spring容器,一種是獲取到SchedulerFactoryBean實例,然后調用一個shutdown就搞定了。如果是Quartz獨立使用,則直接調用scheduler.shutdown(true);

7、Quartz的JobDetail、Trigger都可以在運行時重新設置,并且在下次調用時候起作用。這就為動態作業的實現提供了依據。你可以將調度時間策略存放到數據庫,然后通過數據庫數據來設定Trigger,這樣就能產生動態的調度。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品国产品国语在线| 国产亚洲欧美一区| 欧美精品一区二区免费| 国产丝袜高跟一区| www日韩欧美| 亚洲美女又黄又爽在线观看| 国产精品久久久久不卡| 92版电视剧仙鹤神针在线观看| 亚洲精品在线看| 国产一区二区三区在线免费观看| 91在线精品视频| 国产精品视频永久免费播放| 久久天堂av综合合色| 亚洲丝袜一区在线| 中文字幕日韩av综合精品| 69av在线视频| 国产精品18久久久久久麻辣| 国产热re99久久6国产精品| 欧美性猛交xxx| 91探花福利精品国产自产在线| 影音先锋欧美在线资源| 国产91免费看片| 68精品国产免费久久久久久婷婷| 亚洲精品动漫久久久久| 精品激情国产视频| 国语自产精品视频在线看抢先版图片| 国产精品爽黄69天堂a| 97视频在线播放| 亚洲www在线观看| 91久久久久久久久久| 亚洲人午夜精品| 91在线网站视频| 欧美日在线观看| 91精品啪在线观看麻豆免费| 91禁国产网站| 亚洲综合第一页| 日韩中文字幕欧美| 亚洲精品视频在线观看视频| 欧美激情国产高清| 日韩大胆人体377p| 国产欧美一区二区三区四区| 久久精品国产一区| 国产精品一区二区三区成人| 国产精品免费看久久久香蕉| 亚洲a区在线视频| 国产日韩在线精品av| 在线观看久久av| 韩国日本不卡在线| 日韩精品高清在线观看| 精品国产精品自拍| 久久久国产成人精品| 91精品国产777在线观看| 日韩av大片免费看| 久久综合五月天| 欧美激情免费视频| 国产美女精品视频免费观看| 日韩欧美在线视频免费观看| 91国自产精品中文字幕亚洲| 精品久久久999| 97在线看免费观看视频在线观看| 91系列在线播放| 欧美剧在线观看| 成人日韩av在线| 国产免费一区视频观看免费| 色哟哟网站入口亚洲精品| 日韩欧美黄色动漫| 亚洲黄色www网站| 亚洲国产精彩中文乱码av在线播放| 欧美亚洲视频在线观看| 久久国产精品久久久久久久久久| 日韩69视频在线观看| 性日韩欧美在线视频| 欧美日韩999| 伊人久久大香线蕉av一区二区| 亲子乱一区二区三区电影| 人妖精品videosex性欧美| 日韩av在线一区| 国产精品电影久久久久电影网| 国产精品久久久久久久av电影| 国产精品亚洲激情| 欧美激情视频网站| 欧美精品www在线观看| 国产精品啪视频| 中文字幕视频一区二区在线有码| 日韩av综合网站| 精品中文字幕在线2019| 亚洲视频日韩精品| 成人网在线免费看| 亚洲免费av电影| 久久99亚洲精品| 麻豆精品精华液| 亚洲国产精久久久久久| 97国产精品免费视频| 亚洲第一精品久久忘忧草社区| 日韩激情av在线免费观看| 亚洲va欧美va国产综合久久| 欧美一级免费视频| 精品人伦一区二区三区蜜桃网站| 亚洲va欧美va国产综合久久| 成人黄色网免费| 懂色av中文一区二区三区天美| 国产欧美 在线欧美| 精品少妇v888av| 亚洲深夜福利网站| 亚洲毛茸茸少妇高潮呻吟| 国产一区二区激情| 91av福利视频| 亚洲国产欧美精品| 欧美精品免费播放| 国产精品日韩在线观看| 欧美在线观看www| 国产精品无av码在线观看| 国模极品一区二区三区| 日韩精品福利网站| 日韩国产精品视频| 欧美精品久久久久久久久久| 亚洲欧美制服另类日韩| 欧美激情视频在线| 欧美激情一区二区久久久| 久久国产精品免费视频| 91中文精品字幕在线视频| 欧美黑人极品猛少妇色xxxxx| 一夜七次郎国产精品亚洲| 91嫩草在线视频| 亚洲伊人第一页| 国产成人综合一区二区三区| 亚洲电影免费观看高清完整版在线观看| 久久精品国产久精国产思思| 伊人精品在线观看| 欧美裸体xxxx极品少妇| 亚洲欧洲在线免费| 亚洲专区中文字幕| 久久久人成影片一区二区三区| 成人激情视频免费在线| 91精品久久久久久综合乱菊| 亚洲欧洲激情在线| 亚洲成人久久网| 国产精品pans私拍| 亚洲第一福利视频| 久久久噜噜噜久久中文字免| 精品中文字幕乱| 亚洲国产天堂久久综合网| 亚洲人成电影网站色| 欧美美女18p| 欧美尤物巨大精品爽| 欧美另类极品videosbest最新版本| 亚洲黄一区二区| 欧美亚洲伦理www| 91情侣偷在线精品国产| 久久久av一区| 亚洲成人亚洲激情| 78色国产精品| 亚州av一区二区| 国产精品爱啪在线线免费观看| 一区二区中文字幕| 国产精品久久久久久久9999| 成人网在线免费观看| 日韩网站在线观看| 久久国产精品影片| 欧美猛交ⅹxxx乱大交视频| 91视频8mav| 成人福利视频在线观看| 91精品国产综合久久久久久蜜臀| 国产精品久久久久秋霞鲁丝|