黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

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

Spring定時器及cron表達式

更新時間:2021-09-10 11:08:47 來源:動力節(jié)點 瀏覽1559次

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

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

1.Java Timer定時

首先繼承java.util.TimerTask類實現(xiàn)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任務(wù)
timer.schedule(t1,1000,1000);
//從現(xiàn)在開始,每隔500毫秒運行一次t2任務(wù)
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負責啟動定時任務(wù)

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

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

可以通過設(shè)置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>

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

2.Quartz定時器

首先繼承QuartzJobBean類實現(xiàn)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屬性來設(shè)置一個Job對象。

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

啟動定時器

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

SimpleTriggerBean與scheduledTimerTasks類似。指定工作的執(zhí)行頻度,模仿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告訴何時觸發(fā)。最神秘就是cron表達式:

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

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

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

啟動定時器

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

triggers屬性接受一組觸發(fā)器。

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

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 精品亚洲一区二区 | 97狠狠操| 最近的2019中文字幕4 | 激情综合五月天 | 毛片一级在线观看 | 亚洲三级天堂 | 欧美福利视频导航 | 激情综合网婷婷 | 99视频网 | 国产精品久久人人做人人爽 | 久久综合九色婷婷97 | 大片毛片女女女女女女女 | 亚洲综合五月 | 黄色特级网站 | 天天拍夜夜添久久精品免费 | 国产人成精品午夜在线观看 | 日韩在线成人 | 国产年成美女网站视频免费看 | 狠狠干天天爽 | 日韩精品一区二区三区在线观看 | haose16在线永久免费 | 日本国内一区二区三区 | 黄色一级大片视频 | 一区二区三区精品视频 | 视频一区二区在线播放 | 国产日韩一区在线精品欧美玲 | 亚洲视频日韩 | 国产欧美一区二区 | 国产欧美成人免费观看视频 | 99久久综合 | 91在线免费公开视频 | 97久久精品人人做人人爽 | 一级做a爰片性色毛片思念网 | 午夜视频在线观看完整高清在线 | free性欧美hd粗暴 | 丁香综合激情 | 黄色特级毛片 | 亚欧有色在线观看免费版高清 | 欧美成人鲁丝片在线观看 | 中国特黄毛片 | 亚洲成人动漫在线 |