日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Quartz2 定时器 《一》(概述)

發(fā)布時(shí)間:2023/12/9 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Quartz2 定时器 《一》(概述) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??

Quartz2?
?????說白了,就是個(gè)功能比較完善的定時(shí)器,可以通過指定的時(shí)間執(zhí)行指定的任務(wù)。

?

應(yīng)用范圍

????a.比如讓商城的活動(對象)在指定的時(shí)間(定時(shí))從發(fā)布變?yōu)榧せ?/p>

????b.比如平臺每天2:00去給用戶發(fā)送通知。

????c.本來指定商城每天2:00發(fā)通知,但是碰到了星期天(觸發(fā)器)改為1:00發(fā)通知

????定時(shí)器的應(yīng)用范圍其實(shí)很廣,上面只是簡單舉了幾個(gè)例子。

?

準(zhǔn)備

????資源下載地址:http://www.quartz-scheduler.org/

????<dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.2.1</version></dependency><dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz-jobs</artifactId><version>2.2.1</version></dependency>

????如上在pom.xml加入要引入的jar包

?

Quartz中的設(shè)計(jì)模式

  • Builder模式

  • 所有關(guān)鍵組件都有Builder模式來構(gòu)建 ?<Builder> 如:JobBuilder、TriggerBuilder

  • Factory模式

  • 最終由Scheduler的來進(jìn)行組合各種組件 ?<Factory> 如SchedulerFactory

  • Quartz項(xiàng)目中大量使用組件模式,插件式設(shè)計(jì),可插拔,耦合性低,易擴(kuò)展,開發(fā)者可自行定義自己的Job、Trigger等組件

  • 鏈?zhǔn)綄懛?Quartz中大量使用鏈?zhǔn)綄懛?#xff0c;與jQuery的寫法有幾分相似,實(shí)現(xiàn)也比較簡單,如:

  • ?$(this).addClass("divCurrColor").next(".divContent").css("display","block"); ?

  • newTrigger().withIdentity(?"trigger3",?"group1").startAt(?startTime)

    ??????? .withSchedule(simpleSchedule().withIntervalInSeconds(10).withRepeatCount(10)).build();

  • ?

    框架核心分析

    ?

  • SchedulerFactory ? ?-- 調(diào)度程序工廠

  • ThreadExecutor / DefaultThreadExecutor ? -- 內(nèi)部線程操作對象

  • StdSchedulerFactory ? -- Quartz默認(rèn)的SchedulerFactory

  • DirectSchedulerFactory ?--???DirectSchedulerFactory是對SchedulerFactory的直接實(shí)現(xiàn),通過它可以直接構(gòu)建Scheduler、threadpool?

  • JobExecutionContext -- JOB上下文,保存著Trigger、?JobDeaitl?等信息,JOB的execute方法傳遞的參數(shù)就是對象的實(shí)例

  • JobExecutionContextImpl

  • Scheduler?? ?-- 調(diào)度器

  • StdScheduler ? ?--?Quartz默認(rèn)的Scheduler

  • RemoteScheduler ?-- 帶有RMI功能的Scheduler

  • JOB?--任務(wù)對象

  • JobDetail ?-- 他是實(shí)現(xiàn)輪詢的一個(gè)的回調(diào)類,可將參數(shù)封裝成JobDataMap對象,Quartz將任務(wù)的作業(yè)狀態(tài)保存在JobDetail中.

  • JobDataMap --??JobDataMap用來報(bào)錯由JobDetail傳遞過來的任務(wù)實(shí)例對象

  • Trigger

  • SimpleTrigger <普通的Trigger> -- ?SimpleScheduleBuilder

  • CronTrigger ?<帶Cron Like 表達(dá)式的Trigger> --?CronScheduleBuilder

  • CalendarIntervalTrigger <帶日期觸發(fā)的Trigger> --?CalendarIntervalScheduleBuilder

  • DailyTimeIntervalTrigger <按天觸發(fā)的Trigger> --?DailyTimeIntervalScheduleBuilder

  • ThreadPool ?--??為Quartz運(yùn)行任務(wù)時(shí)提供了一些線程

  • SimpleThreadPool ?--一個(gè)Quartz默認(rèn)實(shí)現(xiàn)的簡單線程池,它足夠健壯,能夠應(yīng)對大部分常用場景

  • 實(shí)現(xiàn)思想:

    //?1、工廠模式?構(gòu)建Scheduler的Factory,其中STD為Quartz默認(rèn)的Factory?? //????開發(fā)者亦可自行實(shí)現(xiàn)自己的Factory;Job、Trigger等組件??SchedulerFactory?sf?=?new?StdSchedulerFactory();??//?2、通過SchedulerFactory構(gòu)建Scheduler對象??Scheduler?sched?=?sf.getScheduler();??//?3、org.quartz.DateBuilder.evenMinuteDate??--?通過DateBuilder構(gòu)建Date??Date?runTime?=?evenMinuteDate(?new?Date());??//?4、org.quartz.JobBuilder.newJob?<下一分鐘>?--通過JobBuilder構(gòu)建Job??JobDetail?job?=?newJob(HelloJob.class).withIdentity("job1","group1").build();??//這里指定的HelloJob.class是job1的實(shí)現(xiàn)//?5、通過TriggerBuilder進(jìn)行構(gòu)建Trigger?? Trigger?trigger?=?newTrigger().withIdentity("trigger1","group1")??.startAt(runTime).build();??//?6、工廠模式,組裝各個(gè)組件<JOB,Trigger>?---???表示創(chuàng)建sched.scheduleJob?(job,?trigger);??//?7、start??? sched.start();??try?{??Thread.sleep(65L?*?1000L);?? }?catch?(Exception?e)?{?? }??//?8、通過Scheduler銷毀內(nèi)置的Trigger和Job?? sched.shutdown(true);

    ?

    一句話實(shí)現(xiàn):

    ? ?1、創(chuàng)建調(diào)度工廠(); ? ?//工廠模式

    ? ?2、根據(jù)工廠取得調(diào)度器實(shí)例(); ?//工廠模式

    ? ?3、Builder模式構(gòu)建子組件<Job,Trigger> ?//?builder模式, 如JobBuilder、TriggerBuilder、DateBuilder

    ? ?4、通過調(diào)度器組裝子組件 ? 調(diào)度器.組裝<子組件1,子組件2...> ?//工廠模式

    ? ?5、調(diào)度器.start();?//工廠模式

    **************************************************************************************************

    ********來源:http://blog.csdn.net/chenweitang123/article/details/37777399**********

    **************************************************************************************************

    ?

    轉(zhuǎn)載于:https://my.oschina.net/gxiao/blog/551168

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎

    總結(jié)

    以上是生活随笔為你收集整理的Quartz2 定时器 《一》(概述)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。