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

專注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ù)文檔推薦 >>
主站蜘蛛池模板: 欧美日韩国产超高清免费看片 | 欧美日本日韩 | 一个人看的www片免费视频中文 | 欧美亚洲国产成人综合在线 | 欧美成人亚洲国产精品 | 欧美日韩一区二区中文字幕视频 | 国产区网址 | 亚洲人成网站在线观看青青 | 久久天天干 | 国产午夜精品鲁丝片 | 一级一级一级毛片免费毛片 | 韩剧伦理片在线观看 | 日本不卡va | 国产在线观看99 | 99亚洲精品视频 | 国产成人精品999在线观看 | a级特黄一级毛片七仙女思春 | 波多野结衣国产一区二区三区 | 中文字幕日本精品一区二区三区 | 一级黄色片免费播放 | 欧美成人亚洲国产精品 | 欧美性猛交一区二区三区精品 | 欧美人与牲动交xxxxbbbb | 色黄网站在线观看 | 九九自拍视频 | 一个人看的www高清在线观看 | 欧洲美女乱之伦 | 一个人看的www高清视频 | 成人欧美视频在线看免费 | 六月丁香在线观看 | 国产激情一区二区三区在线观看 | 无遮挡h肉动漫在线播放内衣 | 国内精品 大秀视频 日韩精品 | 久久久久avav久久久 | 成人精品在线视频 | 国产无内制服肉丝精品视频 | 国产日韩欧美在线 | 一本大道香蕉中文在线高清 | 日本高清xxxxx | 亚洲高清一区二区三区久久 | 波多野结衣视频在线观看 |