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

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

Spring定時器及cron表達式

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

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編程,感興趣的同學可以關注一下。

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 四虎免费影院4hu永久免费 | 一级毛片日本特黄97人人 | 天天摸天天干天天操 | 黄色片网站在线观看 | 国产欧美一区二区精品久久久 | 欧美黄色网址 | 国产在线自在拍91精品黑人 | 久久久7777888精品 | 99re热视频精品首页 | 老司机观看精品一区二区 | 波多野结衣一区二区 | 久久国产视屏 | 国语精品视频在线观看不卡 | 亚洲成人7777 | 精品视频在线免费观看 | 黄色国产视频 | 97久久精品 | 精品精品久久宅男的天堂 | 欧美白人极品性喷潮 | 免费人成年短视频在线观看网站 | 久久国产成人精品国产成人亚洲 | 欧美成人久久一级c片免费 欧美成人剧情中文字幕 | 深夜在线免费观看 | 亚洲日韩第一页 | 特黄aaaaaaaaa真人毛片 | 日日操夜夜操狠狠操 | 国产欧美一区二区三区免费 | 久青草国产在视频在线观看 | 久久大香香蕉国产免费网vrr | 色综合综合网 | 视频一区欧美 | 日韩精品一区二区三区在线观看 | 香港a毛片免费全部播放 | 精品久久久久久久久久香蕉 | a一级毛片视频免费看 | 青春草国产成人精品久久 | 免费一区二区三区免费视频 | 欧美福利精品福利视频在线观看 | 美女黄色免费在线观看 | 久九色| 超乳w真性中出し冲田杏梨101 |