大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Spring定時器及cron表達式

Spring定時器及cron表達式

更新時間:2021-09-10 11:08:47 來源:動力節點 瀏覽1556次

spring定時器及cron表達式(quartz中時間表達式)

在Spring中有兩種流行配置:JavaTimer類和OpenSymphony的Quartz。

1.Java Timer定時

首先繼承java.util.TimerTask類實現run方法

imp<wbr>ort java.util.TimerTask;<br> public class EmailReportTask extends TimerTask{<br> @Override<br> public void run() {<br> ...<br> }<br> }</wbr>

例如

Task.java

imp<wbr>ort java.util.TimerTask;</wbr>
public class Task extends TimerTask ...{
private String id;
public Task(String id)...{
this.id = id;
}
@Override
public void run() ...{
System.out.println(id+" is running...");
}
}

Test .java

imp<wbr>ort java.util.Date;<br> imp<wbr>ort java.util.Timer;<br> imp<wbr>ort java.util.TimerTask;</wbr></wbr></wbr>
public class Test ...{
/** *//**
* @param args
*/
public static void main(String[] args) ...{
Timer timer = new Timer();
TimerTask t1 = new Task("t1");
TimerTask t2 = new Task("t2");
//1000毫秒后,每隔1000毫秒運行一次t1任務
timer.schedule(t1,1000,1000);
//從現在開始,每隔500毫秒運行一次t2任務
timer.schedule(t2, new Date(),500);
try ...{
Thread.sleep(10000);
} catch (InterruptedException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
timer.cancel();
System.out.println("---end---");
}
}

在Spring定義

<bean id="reportTimerTask" class="EmailReportTask">...</bean>

配置定時器

<bean id="scheduleReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask" ref="reportTimerTask" />
<property name="period">
<value>86400000</value>
</property>
</bean>

timerTask屬性告訴ScheduledTimerTask運行哪個。86400000代表24個小時

啟動定時器

Spring的TimerFactoryBean負責啟動定時任務

<bean class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list><ref bean="scheduleReportTask"/></list>
</property>
</bean>

scheduledTimerTasks里顯示一個需要啟動的定時器任務的列表。

可以通過設置delay屬性延遲啟動

<bean id="scheduleReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask" ref="reportTimerTask" />
<property name="period">
<value>86400000</value>
</property>
<property name="delay">
<value>3600000</value>
</property>
</bean>

這個任務我們只能規定每隔24小時運行一次,無法精確到某時啟動

2.Quartz定時器

首先繼承QuartzJobBean類實現executeInternal方法

imp<wbr>ort org.quartz.JobExecutionContext;<br> imp<wbr>ort org.quartz.JobExecutionException;<br> imp<wbr>ort org.springframework.scheduling.quartz.QuartzJobBean;</wbr></wbr></wbr>
public class EmailReportJob extends QuartzJobBean{
protected void executeInternal(JobExecutionContext arg0)
throws JobExecutionException {
...
}
}

在Spring中定義

<bean id="reportJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>EmailReportJob</value>
</property>
<property name="jobDataAsMap">
<map>
<entry key="courseService">
<ref bean="courseService"/>
</entry>
</map>
</property>
</bean>

在這里我們并沒有直接聲明一個EmailReportJob Bean,而是聲明了一個JobDetailBean。這個是Quartz的特點。JobDetailBean是Quartz的org.quartz.JobDetail的子類,它要求通過jobClass屬性來設置一個Job對象。

使用Quartz的JobDetail中的另一個特別之處是EmailReportJob的courseService屬性是間接設置的。JobDetail的jobDataAsMap屬性接受一個Map,包括設置給jobClass的各種屬性,當。JobDetailBean實例化時,它會將courseService Bean注入到EmailReportJob 的courseService 屬性中。

啟動定時器

Quartz的org.quartz.Trigger類描述了何時及以怎樣的頻度運行一個Quartz工作。Spring提供了兩個觸發器SimpleTriggerBean和CronTriggerBean。

SimpleTriggerBean與scheduledTimerTasks類似。指定工作的執行頻度,模仿scheduledTimerTasks配置

<bean id="simpleReportTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail" ref="reprotJob" />
<property name="startDelay">
<value>360000</value>
</property>
<property name="repeatInterval">
<value>86400000</value>
</property>
</bean>

startDelay也是延遲1個小時啟動

CronTriggerBean指定工作的準確運行時間

<bean id="cronReportTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="reprotJob" />
<property name="cronExpression">
<value>0 0 6 * * ?</value>
</property>
</bean>

屬性cronExpression告訴何時觸發。最神秘就是cron表達式:

Linux系統的計劃任務通常有cron來承擔。一個cron表達式有至少6個(也可能7個)有空格分隔的時間元素。從左到右:

1.秒2.分3.小時4.月份中的日期(1-31)5.月份(1-12或JAN-DEC)6.星期中的日期(1-7或SUN-SAT)7.年份(1970-2099)

每個元素都顯示的規定一個值(如6),一個區間(9-12),一個列表(9,11,13)或一個通配符(*)。因為4和6這兩個元素是互斥的,因此應該通過設置一個問號(?)來表明不想設置的那個字段,“/”如果值組合就表示重復次數(10/6表示每10秒重復6次)。

啟動定時器

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list><ref bean="cronReportTrigger"/></list>
</property>
</bean>

triggers屬性接受一組觸發器。

以上就是動力節點小編介紹的"Spring定時器及cron表達式",希望對大家有幫助,想了解更多可查看Spring框架教程。動力節點在線學習教程,針對沒有任何Java基礎的讀者學習,讓你從入門到精通,主要介紹了一些Java基礎的核心知識,讓同學們更好更方便的學習和了解Java編程,感興趣的同學可以關注一下。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 日韩三级不卡 | 国产女人成人精品视频 | 337p欧洲亚洲大胆艺术 | 久久精品一区二区三区资源网 | 狠色狠狠色狠狠狠色综合久久 | 国产一级aaa全黄毛片 | 成年女人18级毛片毛片 | 中文字幕日韩女同互慰视频 | 99re5在线精品视频热线 | 免费的黄色网 | 欧美jizz19性欧美 | 特黄特色大片免费播放器999 | 久久亚洲影院 | 香蕉视频伊人 | 国产激情久久久久久影院 | www.日日干| 欧美一级毛片aaaaa | 色哦色哦哦色天天综合 | 欧美日韩国产成人综合在线影院 | 91热久久免费频精品动漫99 | 91免费国产高清观看 | 久草视频播放 | 国产福利午夜 | 国产免费一级精品视频 | 亚洲综合精品一区二区三区中文 | 欧美一级午夜免费视频你懂的 | 夜夜夜夜夜夜夜猛噜噜噜噜噜噜 | 久久久久久久综合日本亚洲 | 免费观看黄色a一级录像 | 欧美亚洲网 | 天天靠天天擦天天摸 | 色综合天天射 | 97视频免费人人观看人人 | 欧美成人精品一区二区三区 | 四虎4hutv永久在线影院 | 色在线综合| 国产成人青草视频 | 伊人久久成人成综合网222 | 亚欧成人一区二区 | 国产精品一区伦免视频播放 | 中文字幕在线视频免费观看 |