Spring定時器的兩種實現方式
本文向您介紹Spring定時器的兩種實現方式,包括Java Timer定時和Quartz定時器,兩種Spring定時器的實現方式各有優點,可結合具體專案考慮是否採用
[@more@]有兩種流行Spring定時器配置:Java的Timer類和OpenSymphony的Quartz。
1.Java Timer定時
首先繼承java.util.TimerTask類實現run方法
import java.util.TimerTask;
public class EmailReportTask extends TimerTask{
@Override
public void run() {
...
}
}
在Spring定義
...
配置Spring定時器
property>
bean>
timerTask屬性告訴ScheduledTimerTask執行哪個。86400000代表24個小時
啟動Spring定時器
Spring的TimerFactoryBean負責啟動定時任務
2.Quartz定時器
首先繼承QuartzJobBean類實現executeInternal方法
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
public class EmailReportJob extends QuartzJobBean{
protected void executeInternal(JobExecutionContext arg0)
throws JobExecutionException {
...
}
}
在Spring中定義
property>
使用Quartz的JobDetail中的另一個特別之處是EmailReportJob的courseService屬性是間接設定的。JobDetail的jobDataAsMap屬性接受一個Map,包括設定給jobClass的各種屬性,當。JobDetailBean例項化時,它會將courseService Bean注入到EmailReportJob 的courseService 屬性中。
啟動定時器
Quartz的org.quartz.Trigger類描述了何時及以怎樣的頻度執行一個Quartz工作。Spring提供了兩個觸發器SimpleTriggerBean和CronTriggerBean。
SimpleTriggerBean與scheduledTimerTasks類似。指定工作的執行頻度,模仿scheduledTimerTasks配置 .
property>
property>
bean>
startDelay也是延遲1個小時啟動
CronTriggerBean指定工作的準確執行時間
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次)。
啟動定時器
另外一篇Java定時器文章:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/143526/viewspace-1060751/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spring Boot 中實現定時任務的兩種方式Spring Boot
- Go定時器的三種實現方式Go定時器
- Spring Boot2 系列教程(十六)定時任務的兩種實現方式Spring Boot
- Spring實現IOC容器的兩種實現方式Spring
- Spring Boot 實現定時任務的 4 種方式Spring Boot
- Spring宣告式事務的兩種實現方式Spring
- js實現0ms延時定時器的幾種方式JS定時器
- Python實現定時任務的多種方式Python
- 【JavaScript定時器小案例】常見的幾種定時器實現的案例JavaScript定時器
- 兩種方式實現輪播圖
- SpringBoot實現熱部署兩種方式!Spring Boot熱部署
- 前端--實現隔行變色的兩種方式前端
- 玩轉SpringBoot:SpringBoot的幾種定時任務實現方式Spring Boot
- zuul實現Cors跨域的兩種方式(https)ZuulCORS跨域HTTP
- MyBatis中主鍵回填的兩種實現方式MyBatis
- React元件方法的兩種定義方式React元件
- 【Spring Security】實現多種認證方式Spring
- netty系列之:HashedWheelTimer一種定時器的高效實現Netty定時器
- 兩種方式實現橫向滾動條
- ViewPager兩種方式實現無限輪播Viewpager
- 關於多執行緒的兩種實現方式執行緒
- 實戰Spring Boot 2.0系列(六) - 單機定時任務的幾種實現Spring Boot
- SSH整合實現分頁查詢(兩種方式)
- Java中實現並行請求兩種方式Java並行
- 【jmeter】實現介面關聯的兩種方式:正規表示式提取器和json提取器JMeterJSON
- RabbitMQ實現延時訊息的兩種方法MQ
- 幾種實現延時任務的方式(一)
- Spring排程定時任務的方式Spring
- 實現布隆過濾器的三種方式過濾器
- Spring Boot 整合 Shiro ,兩種方式全總結!Spring Boot
- 基於 Electron 做視訊會議的兩種實現方式
- html隨意拖動內容位置的兩種實現方式HTML
- C++定時器CTimer的實現C++定時器
- Ubuntu設定root登入有兩種方式Ubuntu
- 伺服器實現埠轉發的N種方式伺服器
- Spring框架訪問資料庫的兩種方式的小案例Spring框架資料庫
- springAOP的三種實現方式Spring
- ChatTTS的兩種使用方式TTS
- Java兩種方式實現連結串列的刪除,返回頭結點Java