亚洲欧美日韩熟女|做爱高潮视频网址|国产一区二区三级片|国产Av中文字幕www.性色av|亚洲婷婷永久免费|国产高清中文字幕|欧美变态网站久re视频精品|人妻AV鲁丝第一页|天堂AV一区二区在线观看|综合 91在线精品

總結(jié)Quartz使用示例總結(jié)

2023-05-22


在目前的JAVA應(yīng)用中,任務(wù)調(diào)度應(yīng)用非常廣泛,因此掌握QUARTZ是必要的技能。


少說(shuō)閑話,上官網(wǎng):http://www.quartz-scheduler.org/下載最新1.80資源包


commons-logging log4j sff4j 等待jar包要加入,quartz的jar包肯定是必須的。


先寫(xiě)一個(gè)類(lèi)來(lái)實(shí)現(xiàn)Job接口。






代碼Java



1. public class QuartzDemo implements Job{   
2.  
3.    @Override  
4.    public void execute(JobExecutionContext arg0) throws JobExecutionException {   
5.        System.out.println("執(zhí)行我...");   
6.           
7.    }   
8.  
9. }










然后寫(xiě)上各種各樣的測(cè)試案例






代碼Java





1. public class Test {   
2.    private static final SimpleTrigger CronTrigger = null;   
3.  
4.    public static void main(String[] args){   
5.    }   
6.       
7.    public void 特別1(){   
8.          ///通過(guò)SchedulerFactory獲得調(diào)度器   
9.        SchedulerFactory schedulerFactory = new StdSchedulerFactory();   
10.        Scheduler scheduler;   
11.        try {   
12.            scheduler = schedulerFactory.getScheduler();   
13.           
14.           
15.           
16.           
17.        //引入操作程序   
18.        JobDetail jobDetail =    
19.        new JobDetail("jobDetail-s1", "jobDetailGroup-s1", QuartzDemo.class);   
20.  
21.         ///new觸發(fā)器   
22.        SimpleTrigger simpleTrigger =    
23.        new SimpleTrigger("simpleTrigger", "triggerGroup-s1");   
24.  
25.  
26.        ///設(shè)定工作啟動(dòng)時(shí)間   
27.  
28.        long ctime = System.currentTimeMillis();    
29.        simpleTrigger.setStartTime(new Date(ctime));   
30.  
31.  
32.        ///設(shè)置工作執(zhí)行間隔。    
33.        simpleTrigger.setRepeatInterval(1000);   
34.  
35.        ///設(shè)定工作執(zhí)行頻次。   
36.        simpleTrigger.setRepeatCount(10);   
37.  
38.        //默認(rèn)情況下設(shè)置工作執(zhí)行優(yōu)先   
39.        //simpleTrigger.setPriority(10);   
40.  
41.  
42.        在調(diào)度器中設(shè)置操作和觸發(fā)器   
43.        scheduler.scheduleJob(jobDetail, simpleTrigger);   
44.           
45.        //啟動(dòng)調(diào)度器   
46.        scheduler.start();   
47.        } catch (SchedulerException e) {   
48.            // TODO Auto-generated catch block   
49.            e.printStackTrace();   
50.        }   
51.    }   
52.       
53.    public void test2(){   
54.  
55.        try    {   
56.            SchedulerFactory schedFact  =   new  org.quartz.impl.StdSchedulerFactory();   
57.            Scheduler sched  =  schedFact.getScheduler();   
58.            sched.start();   
59.            JobDetail jobDetail  =   new  JobDetail( " Income Report " ,   
60.                     " Report Generation " , QuartzDemo.class );   
61.            jobDetail.getJobDataMap().put( " type " ,  " FULL " );   
62.            CronTrigger trigger  =   new  CronTrigger( " Income Report " ,   
63.                     " Report Generation " );   
64.                  
65.            trigger.setCronexpression_r( "0 33 16 * * ?" );   
66.            sched.scheduleJob(jobDetail, trigger);   
67.        }   catch  (Exception e)   {   
68.            e.printStackTrace();   
69.        }    
70.    }   
71.       
72.    public void test3(){   
73.         ///通過(guò)SchedulerFactory獲得調(diào)度器   
74.      SchedulerFactory schedulerFactory = new StdSchedulerFactory();   
75.      Scheduler scheduler;   
76.        try {   
77.            scheduler = schedulerFactory.getScheduler();     
78.      //引入操作程序   
79.      JobDetail jobDetail =    
80.      new JobDetail("jobDetail-s1", "jobDetailGroup-s1", QuartzDemo.class);   
81.       ///new觸發(fā)器   
82.      CronTrigger simpleTrigger =    
83.        new CronTrigger("trigger", "group", "job", "group", "16 26/1 8-17 * * ?");   
84.     // new SimpleTrigger("simpleTrigger", "triggerGroup-s1");   
85.  
86.  
87.      ///設(shè)定工作啟動(dòng)時(shí)間   
88.    //Calendar excelCal = Calendar.getInstance();   
89.        //excelCal.add(Calendar.DAY_OF_MONTH, 1);   
90.        ///excelCal.set(Calendar.HOUR_OF_DAY, 16);   
91.        //excelCal.set(Calendar.SECOND, 0);   
92.        //excelCal.add(Calendar.MINUTE, 9);   
93.     // long ctime = System.currentTimeMillis();    
94.     // simpleTrigger.setStartTime(excelCal.getTime());   
95.      ///設(shè)置工作執(zhí)行間隔。    
96.     // simpleTrigger.setRepeatInterval(1000);   
97.      ///設(shè)定工作執(zhí)行頻次。   
98.     // simpleTrigger.setRepeatCount(10);   
99.      //默認(rèn)情況下設(shè)置工作執(zhí)行優(yōu)先   
100.      //simpleTrigger.setPriority(10);   
101.           
102.      在調(diào)度器中設(shè)置操作和觸發(fā)器   
103.      scheduler.scheduleJob(jobDetail, simpleTrigger);   
104.         
105.      //啟動(dòng)調(diào)度器   
106.      scheduler.start();   
107.        } catch (SchedulerException e) {   
108.            // TODO Auto-generated catch block   
109.            e.printStackTrace();   
110.        } catch (ParseException e) {   
111.            // TODO Auto-generated catch block   
112.            e.printStackTrace();   
113.        }   
114.           
115.           
116.    }   
117.       
118. }







需要注意的幾點(diǎn)是,org經(jīng)常出現(xiàn)。.quartz.core.ErrorLogger : An error occured instantiating job to be executed...這一異常,解決辦法是







代碼Java



1. 1)Job類(lèi)必須有默認(rèn)的無(wú)參構(gòu)造方法,當(dāng)然不能覆蓋,類(lèi)本來(lái)就是無(wú)參構(gòu)造方法。   
2.  
3. 2)Jobscope必須是Public類(lèi)型,因?yàn)閝uartz是根據(jù)反射機(jī)制實(shí)例化類(lèi)型,如果不是public類(lèi)型,就不能暴露出來(lái)。   
4.  
5. 3)  Job類(lèi)不能屬于內(nèi)部類(lèi),原因同上,因此,盡量獨(dú)立建類(lèi)





1)Job類(lèi)必須有默認(rèn)的無(wú)參構(gòu)造方法,當(dāng)然不能覆蓋,類(lèi)本來(lái)就是無(wú)參構(gòu)造方法。 2)Jobscope必須是Public類(lèi)型,因?yàn)閝uartz是根據(jù)反射機(jī)制實(shí)例化類(lèi)型,如果不是public類(lèi)型,就不能暴露出來(lái)。 3) Job類(lèi)不能是內(nèi)部類(lèi),原因同上,因此盡量獨(dú)立建類(lèi)。







之后加上我在網(wǎng)上收集的。






代碼Java



1. 環(huán)境變量Quartz:quartz.properties   
2. Configure Main Scheduler Properties    
3. = TestScheduler   
4. = one   
5. Configure ThreadPool    
6. org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool   
7. =  5  
8. = 4  
9. Configure JobStore    
10. = 5000  
11. org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore   
12.  
13.  
14. 附件:cronExpression配備表明   
15.  
16.   允許值   特殊的許可符號(hào)    
17.    0-59    , - * /    
18.    0-59    , - * /    
19.    0-23    , - * /    
20.    1-31    , - * ? / L W C    
21.    1-12 或是 JAN-DEC    , - * /    
22.    1-7 或是 SUN-SAT    , - * ? / L C #    
23.    留空, 1970-2099    , - * /    
24.  
25.  
26.   意義    
27. "0 0 12 * * ? / L C #    
23.    留空, 1970-2099    , - * /    
24.  
25.  
26.   意義    
27. "0 0 12 * * ?"    每日中午12點(diǎn)觸發(fā)    
28. "0 15 10 ? * *"    每天早上10:15觸發(fā)    
29. "0 15 10 * * ?"    每天早上10:15觸發(fā)    
30. "0 15 10 * * ? *"    每天早上10:15觸發(fā)    
31. "0 15 10 * * ? 2005"    每天早上1005年:15觸發(fā)    
32. "0 * 14 * * ?"    從下午2點(diǎn)到下午2點(diǎn):每1分鐘觸發(fā)59期間    
33. "0 0/5 14 * * ?"    從下午2點(diǎn)到下午2點(diǎn):每55分鐘觸發(fā)55期間     
34. "0 0/5 14,18 * * ?"    每天下午2點(diǎn)到2點(diǎn):從下午6點(diǎn)到6點(diǎn),55期間:每55分鐘觸發(fā)55期間     
35. "0 0-5 14 * * ?"    從下午2點(diǎn)到下午2點(diǎn):每1分鐘觸發(fā)05期間    
36. "0 10,44 14 ? 3 WED"    星期三,每年三月的下午?:10和2:44觸發(fā)    
37. "0 15 10 ? * MON-FRI"    從星期一到星期五的早上10:15觸發(fā)    
38. "0 15 10 15 * ?"    每月15日早上10:15觸發(fā)    
39. "0 15 10 L * ?"    每個(gè)月的最后一天早上10:15觸發(fā)    
40. "0 15 10 ? * 6L"    每個(gè)月的最后一個(gè)星期五早上10:15觸發(fā)      
41. "0 15 10 ? * 6L 2002-2005"    從2002年到2005年的最后一個(gè)星期五上午:15觸發(fā)    
42. "0 15 10 ? * 6#3"    每個(gè)月的第三個(gè)星期五早上10:15觸發(fā)     
43.  
44.   意義    
45.    表示所有值;    
46.    表示沒(méi)有說(shuō)明數(shù)值,也就是不要注意它的價(jià)值;    
47.    表示指定范圍;    
48.    表示附加一個(gè)可能值;    
49.    開(kāi)始時(shí)間表示在符號(hào)之前,在符號(hào)之后,表示每次增加的值;    
50. L("last")    ("last") "L" 用于day-of-“month”字段的意思是 "這個(gè)月的最后一天";用于 day-of-week字段, 這是一個(gè)簡(jiǎn)單的意思 "7" or "SAT"。 如果是在day-of-在week字段中與數(shù)字聯(lián)合使用,這意味著 "這個(gè)月的最后一周是什么" – 比如: "6L" means "這個(gè)月的最后一個(gè)星期五". 當(dāng)我們用“L"不指出目錄值或范圍是非常重要的,否則,我們將得到一些意想不到的結(jié)果。51. W("weekday")    只有day才能使用-of-month字段。51. W("weekday")    只有day才能使用-of-month字段。用于描述最接近指定日(星期一至星期五)的工作日。例如:在day-of-month字段用“15W”指的是“最接近本月第15天工作日”,即如果本月第15天是星期六,則觸發(fā)器將在本月第14天即星期五觸發(fā);如果本月第15天是星期天,則觸發(fā)器將在本月第16天即星期一觸發(fā);如果本月第15天是星期二,那么觸發(fā)器將在這一天觸發(fā)。注:此用法僅在當(dāng)前月份計(jì)算值,不會(huì)超過(guò)當(dāng)前月份?!癢"字符只能在day中使用-of-month指示一天,不能是一個(gè)范圍或目錄。也可以用“LW來(lái)指定這個(gè)月的最后一個(gè)工作日。52.    只有day才能使用-of-字段week。用于指定本月的第幾個(gè)星期。例子:在day-of-本月第三個(gè)星期五(6指周五,3指第三個(gè)),week字段使用“6#3”。如指定日期不存在,觸發(fā)器不會(huì)觸發(fā)。53.    在聯(lián)系calendar之后,計(jì)算了數(shù)值。例子:在day-of-month 使用“5C”字段是指本月第五天或之后包含calendar的第一天;day-of-“1C”字段是指在本周日或之后包含calendar的第一天使用week字段。

本文僅代表作者觀點(diǎn),版權(quán)歸原創(chuàng)者所有,如需轉(zhuǎn)載請(qǐng)?jiān)谖闹凶⒚鱽?lái)源及作者名字。

免責(zé)聲明:本文系轉(zhuǎn)載編輯文章,僅作分享之用。如分享內(nèi)容、圖片侵犯到您的版權(quán)或非授權(quán)發(fā)布,請(qǐng)及時(shí)與我們聯(lián)系進(jìn)行審核處理或刪除,您可以發(fā)送材料至郵箱:service@tojoy.com