成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > java 中Spring task定時任務(wù)的深入理解

java 中Spring task定時任務(wù)的深入理解

熱門標(biāo)簽:潤滑油銷售電銷機器人 海外圖書館地圖標(biāo)注點 自繪地圖標(biāo)注數(shù)據(jù) 外呼系統(tǒng)使用方法 電銷機器人免培訓(xùn) 給地圖標(biāo)注得傭金 如何看懂地圖標(biāo)注點 電話機器人需要使用網(wǎng)絡(luò)嗎 南通通訊外呼系統(tǒng)產(chǎn)品介紹

java 中Spring task定時任務(wù)的深入理解

在工作中有用到spring task作為定時任務(wù)的處理,spring通過接口TaskExecutor和TaskScheduler這兩個接口的方式為異步定時任務(wù)提供了一種抽象。這就意味著spring容許你使用其他的定時任務(wù)框架,當(dāng)然spring自身也提供了一種定時任務(wù)的實現(xiàn):spring task。spring task支持線程池,可以高效處理許多不同的定時任務(wù)。同時,spring還支持使用Java自帶的Timer定時器和Quartz定時框架。限于篇幅,這里將只介紹spring task的使用。

其實,官方文檔已經(jīng)介紹地足夠詳細(xì),只不過都是英文版,所以為了更好地理解并使用spring task,首先會對spring task的實現(xiàn)原理做一個簡單的介紹,然后通過實際代碼演示spring task是如何使用的。這里會涉及到一個很重要的知識點:cron表達(dá)式。

TaskExecutor和TaskScheduler

TaskExecutor是spring task的第一個抽象,它很自然讓人聯(lián)想到j(luò)dk中concurrent包下的Executor,實際上TaskExecutor就是為區(qū)別于Executor才引入的,而引入TaskExecutor的目的就是為定時任務(wù)的執(zhí)行提供線程池的支持,那么,問題來了,為什么spring不直接使用jdk自帶的Executor呢?TaskExecutor源碼如下?

public interface TaskExecutor extends Executor {
  void execute(Runnable var1);
}

那么,答案很顯然,TaskExecutor提供的線程池支持也是基于jdk自帶的Executor的。用法于Executor沒有什么不同。

TaskScheduler是spring task的第二個抽象,那么從字面的意義看,TaskScheduler就是為了提供定時任務(wù)的支持咯。TaskScheduler需要傳入一個Runnable的任務(wù)做為參數(shù),并指定需要周期執(zhí)行的時間或者觸發(fā)器,這樣Runnable任務(wù)就可以周期性執(zhí)行了。傳入時間很好理解,有意思的是傳入一個觸發(fā)器(Trigger)的情況,因為這里需要使用cron表達(dá)式去觸發(fā)一個定時任務(wù),所以有必要先了解下cron表達(dá)式的使用。

在spring 4.x中已經(jīng)不支持7個參數(shù)的cronin表達(dá)式了,要求必須是6個參數(shù)(具體哪個參數(shù)后面會說)。cron表達(dá)式的格式如下:

{秒} {分} {時} {日期(具體哪天)} {月} {星期}
  • 秒:必填項,允許的值范圍是0-59,支持的特殊符號包括
  • , - * /,,表示特定的某一秒才會觸發(fā)任務(wù),-表示一段時間內(nèi)會觸發(fā)任務(wù),*表示每一秒都會觸發(fā),/表示從哪一個時刻開始,每隔多長時間觸發(fā)一次任務(wù)。
  • 分:必填項,允許的值范圍是0-59,支持的特殊符號和秒一樣,含義類推
  • 時:必填項,允許的值范圍是0-23,支持的特殊符號和秒一樣,含義類推
  • 日期:必填項,允許的值范圍是1-31,支持的特殊符號相比秒多了?,表示與{星期}互斥,即意味著若明確指定{星期}觸發(fā),則表示{日期}無意義,以免引起沖突和混亂。
  • 月:必填項,允許的值范圍是1-12(JAN-DEC),支持的特殊符號與秒一樣,含義類推
  • 星期:必填項,允許值范圍是1~7 (SUN-SAT),1代表星期天(一星期的第一天),以此類推,7代表星期六,支持的符號相比秒多了?,表達(dá)的含義是與{日期}互斥,即意味著若明確指定{日期}觸發(fā),則表示{星期}無意義。

比如下面這個cron表達(dá)式:

// 表達(dá)的含義是:每半分鐘觸發(fā)一次任務(wù)
30 * * * * ?

spring提供了一個CronTrigger,通過傳入一個Runnable任務(wù)和CronTrigger,就可以使用cron表達(dá)式去指定定時任務(wù)了,是不是非常方面。實際上,在工程實踐上,cron表達(dá)式也是使用很多的。實際上,是執(zhí)行了下面的代碼:

scheduler.schedule(task, new CronTrigger("30 * * * * ?"));

TaskScheduler抽象的好處是讓需要執(zhí)行定時任務(wù)的代碼不需要指定特定的定時框架(比如Timer和Quartz)。TaskScheduler的更簡單的實現(xiàn)是ThreadPoolTaskScheduler,它實際上代理一個jdk中的SchedulingTaskExecutor,并且也實現(xiàn)了TaskExecutor接口,所以需要經(jīng)常執(zhí)行定時任務(wù)的場景可以使用這個實現(xiàn)(Spring推薦)。我們再來看一下TaskExecutor和TaskScheduler的類繼承關(guān)系:

通常而言,使用spring task實現(xiàn)定時任務(wù)有兩種方式:注解和xml配置文件。這里使用xml配置文件的方式加以說明。

實戰(zhàn)

創(chuàng)建Maven工程,pom.xml:

?xml version="1.0" encoding="UTF-8"?>
project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  modelVersion>4.0.0/modelVersion>

  groupId>com.rhwayfun/groupId>
  artifactId>sring-task-demo/artifactId>
  version>1.0-SNAPSHOT/version>

  dependencies>
    dependency>
      groupId>org.springframework/groupId>
      artifactId>spring-context/artifactId>
      version>4.2.4.RELEASE/version>
    /dependency>
  /dependencies>

  build>
    plugins>
      plugin>
        groupId>org.apache.maven.plugins/groupId>
        artifactId>maven-compiler-plugin/artifactId>
        version>3.5.1/version>
        configuration>
          source>1.8/source>
          target>1.8/target>
        /configuration>
      /plugin>
    /plugins>
  /build>
/project>

開發(fā)需要執(zhí)行定時任務(wù)的方法:

package com.rhwayfun.task;

import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

/**
 * @author ZhongCB
 * @date 2016年09月10日 14:30
 * @description
 */
@Component
public class App {

  public void execute1(){
    System.out.printf("Task: %s, Current time: %s\n", 1, LocalDateTime.now());
  }

  public void execute2(){
    System.out.printf("Task: %s, Current time: %s\n", 2, LocalDateTime.now());
  }

  public void execute3(){
    System.out.printf("Task: %s, Current time: %s\n", 3, LocalDateTime.now());
  }

  public void execute4(){
    System.out.printf("Task: %s, Current time: %s\n", 4, LocalDateTime.now());
  }

  public void execute5(){
    System.out.printf("Task: %s, Current time: %s\n", 5, LocalDateTime.now());
  }

  public void execute6(){
    System.out.printf("Task: %s, Current time: %s\n", 6, LocalDateTime.now());
  }

  public void execute7(){
    System.out.printf("Task: %s, Current time: %s\n", 7, LocalDateTime.now());
  }

  public void execute8(){
    System.out.printf("Task: %s, Current time: %s\n", 8, LocalDateTime.now());
  }

  public void execute9(){
    System.out.printf("Task: %s, Current time: %s\n", 9, LocalDateTime.now());
  }

  public void execute10(){
    System.out.printf("Task: %s, Current time: %s\n", 10, LocalDateTime.now());
  }

  public void execute11(){
    System.out.printf("Task: %s, Current time: %s\n", 11, LocalDateTime.now());
  }

}

spring配置文件如下:

?xml version="1.0" encoding="UTF-8"?>
beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:task="http://www.springframework.org/schema/task"
    xsi:schemaLocation="
      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
      http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd">

  !-- 配置注解掃描 -->
  context:component-scan base-package="com.rhwayfun.task"/>

  task:scheduler id="taskScheduler" pool-size="100" />

  task:scheduled-tasks scheduler="taskScheduler">
    !-- 每半分鐘觸發(fā)任務(wù) -->
    task:scheduled ref="app" method="execute1" cron="30 * * * * ?"/>
    !-- 每小時的10分30秒觸發(fā)任務(wù) -->
    task:scheduled ref="app" method="execute2" cron="30 10 * * * ?"/>
    !-- 每天1點10分30秒觸發(fā)任務(wù) -->
    task:scheduled ref="app" method="execute3" cron="30 10 1 * * ?"/>
    !-- 每月20號的1點10分30秒觸發(fā)任務(wù) -->
    task:scheduled ref="app" method="execute4" cron="30 10 1 20 * ?"/>
    !-- 每年10月20號的1點10分30秒觸發(fā)任務(wù) -->
    task:scheduled ref="app" method="execute5" cron="30 10 1 20 10 ?"/>
    !-- 每15秒、30秒、45秒時觸發(fā)任務(wù) -->
    task:scheduled ref="app" method="execute6" cron="15,30,45 * * * * ?"/>
    !-- 15秒到45秒每隔1秒觸發(fā)任務(wù) -->
    task:scheduled ref="app" method="execute7" cron="15-45 * * * * ?"/>
    !-- 每分鐘的每15秒時任務(wù)任務(wù),每隔5秒觸發(fā)一次 -->
    task:scheduled ref="app" method="execute8" cron="15/5 * * * * ?"/>
    !-- 每分鐘的15到30秒之間開始觸發(fā),每隔5秒觸發(fā)一次 -->
    task:scheduled ref="app" method="execute9" cron="15-30/5 * * * * ?"/>
    !-- 每小時的0分0秒開始觸發(fā),每隔3分鐘觸發(fā)一次 -->
    task:scheduled ref="app" method="execute10" cron="0 0/3 * * * ?"/>
    !-- 星期一到星期五的10點15分0秒觸發(fā)任務(wù) -->
    task:scheduled ref="app" method="execute11" cron="0 15 10 ? * MON-FRI"/>
  /task:scheduled-tasks>

/beans>

編寫測試代碼:

package com.rhwayfun.task;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @author ZhongCB
 * @date 2016年09月10日 14:55
 * @description
 */
public class AppTest {

  public static void main(String[] args) {
    ApplicationContext context = new ClassPathXmlApplicationContext("classpath:/app-context-task.xml");
  }
}

運行測試代碼,控制臺會定時輸出每個定時任務(wù)的日志信息,說明測試通過。

小插曲

由于項目使用jdk 1.8進(jìn)行開發(fā),所以初始的時候每次pom文件發(fā)生修改,編譯器的版本又變成了jdk 1.5,后面發(fā)現(xiàn)需要在pom文件中添加build便簽?zāi)遣糠植拍軐⒛J(rèn)的編譯器進(jìn)行修改。也算一個小收獲了。

如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

您可能感興趣的文章:
  • Java之SpringBoot定時任務(wù)案例講解
  • Java下SpringBoot創(chuàng)建定時任務(wù)詳解
  • java Quartz定時器任務(wù)與Spring task定時的幾種實現(xiàn)方法
  • 最流行的java后臺框架spring quartz定時任務(wù)
  • Java spring定時任務(wù)詳解

標(biāo)簽:貸款邀約 廣州 樂山 黃石 內(nèi)江 南京 大連 銅川

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《java 中Spring task定時任務(wù)的深入理解》,本文關(guān)鍵詞  java,中,Spring,task,定時,任務(wù),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《java 中Spring task定時任務(wù)的深入理解》相關(guān)的同類信息!
  • 本頁收集關(guān)于java 中Spring task定時任務(wù)的深入理解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    一本久道中文无码字幕av| 国产午夜精品久久久久免费视| 国产三级在线观看完整版| 男男受被啪到高潮自述| 欧美精品久久久久久久久25p| 免费在线观看黄色网| 精品中文字幕久久久久久| 亚洲美女视频网| 暧暧视频在线免费观看| 噼里啪啦国语在线观看免费版高清版| 日韩av一区二区在线播放| 日本在线观看中文字幕| 依依成人综合网| 亚洲第一福利社区| 97国产在线观看| 成人福利视频网| 中文字幕最新精品| 国产区视频在线| 亚洲一区二区三区四区| 性欧美xxxx免费岛国不卡电影| 夜色视频网站| 国产伦精品一区二区| 亚洲图片欧美日产| 天天干天天色综合| 久久成年人免费电影| bt7086福利一区国产| 国产伦精品一区二区三区视频青涩| 国内精品久久久久伊人av| 好看的日韩av电影| 日本www视频在线观看| www.久久伊人| 精品国产1区二区| 最新国产乱人伦偷精品免费网站| 日韩aaaaa| 久久精品国产清自在天天线| 极品一线天粉嫩虎白馒头| 欧美日韩在线视频首页| 激情综合网站| 狠狠色噜噜狠狠狠狠97| av资源免费看| 中文字幕va一区二区三区| 精品91在线| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲成年人电影网站| 美女被内谢流白浆高视频| 国产福利在线| 日韩在线视频免费观看高清中文| 九九热播视频在线精品6| www.日韩在线观看| 欧美精品电影在线播放| 韩国三级在线观看久| 免费网站永久免费观看| 欧美影院午夜播放| 国内外激情在线| 天堂中文字幕——hd| 久草在线视频精品| 免费精品一区二区| 欧美一级淫片aaaaaaa视频| 成人影院大全| 奇米影视777在线欧美电影观看| 久久久男人天堂| 国产福利在线免费| 日韩极品精品视频免费观看| 欧美一级黄色片视频| 国产大片中文字幕在线观看| 亚洲精品成人av久久| 91九色国产蝌蚪| 久久不射影院| 久久久久久91香蕉国产| 直接在线观看的三级网址| 成a人片在线观看| 国产精品毛片久久| 美女航空一级毛片在线播放| 精品176极品一区| 奇米视频7777| 伊人久久婷婷| 中文字幕乱视频| 久久99精品久久久久久噜噜| 神马电影网我不卡| 福利在线国产| 91麻豆精品国产91久久久更新时间| aaaaaaa大片免费看| 欧美va久久久噜噜噜久久| 成 人 黄 色 片 在线播放| 亚洲视频一区二区免费在线观看| 国产浪潮av性色av小说| 人妻互换一区二区激情偷拍| 乱老熟女一区二区三区| 国外男同性恋在线看| 有码中文亚洲精品| 久久精品国产亚洲精品| 国产成人精品一区二区三区视频| av在线一区二区| 国产suv精品一区| 欧美一区二区免费在线观看| 国产精品白浆视频免费观看| 超碰成人在线播放| dy888亚洲精品一区二区三区| 伊人春色在线观看| 一女二男一黄一片| 最新69国产成人精品视频免费| 中国一级免费毛片| 一区二区免费播放| 欧美午夜a级限制福利片| 美女999久久久精品视频| 日本欧美韩国一区三区| 亚洲视频电影在线| 成人午夜视频福利| 99免费精品视频| 最新中文字幕久久| 国精产品999国精产品官网| 久久中文字幕国产| 国产日韩欧美在线播放| 欧美另类视频在线观看| 国产精品老熟女一区二区| 99久久er热在这里只有精品15| 国产在线xxx| 日本久久91av| 黄页免费在线观看| 国产三级自拍视频| 亚洲高清不卡| 韩日精品一区| 亚洲免费视频播放| 国产精品国产精品国产专区| 91美女片黄在线观看| 久久久久久久爱| 在线视频欧美精品| 久久99深爱久久99精品| 亚洲成人网上| 中文字幕一区二区三区日韩精品| 欧美激情性做爰免费视频| 久久免费视频6| 亚洲第一精品区| www.26天天久久天堂| 91高清在线| 国产三级av在线| 国产又粗又硬又长| 香蕉视频免费在线播放| 又色又爽又黄18网站| 一二三四在线视频观看社区| 亚洲va码欧洲m码| 精品国产伦一区二区三区观看体验| 国产一区二区三区香蕉| 日韩精品伦理第一区| 麻豆传传媒久久久爱| a级在线观看视频| 久久久水蜜桃av免费网站| 少妇高潮一区二区三区| 新狼窝色av性久久久久久| 久久国产精品国语对白| 青青青青草视频| 亚洲成av人片在线| 婷婷福利视频导航| 亚洲欧美激情在线| 欧美午夜影院一区| 国产精品二区不卡| 美女写真理伦片在线看| 日本久久久久久久久久久| 国产手机免费视频| 成人自拍视频网| 视频一区视频二区视频三区视频四区国产| 福利视频一区| 午放福利视频在线播放| 国产成人亚洲综合小说区| 91精品久久久久久久久不口人| 粉嫩av一区二区三区粉嫩| 亚洲AV无码乱码国产精品牛牛| 57pao成人永久免费| 中文字幕一区二区三区免费视频| 国产精品二线| 99se视频在线观看| 五月婷婷一区| 亚洲欧美中文日韩v在线观看| 韩国免费在线视频| 国产美女扒开尿口久久久| 丝袜美腿精品国产二区| 漂亮人妻被中出中文字幕| 国产欧美日韩在线观看| 亚洲一区视频在线播放| 手机在线看福利| 久久久不卡影院| 另类欧美视频| 欧美最猛黑人xxxx黑人猛叫黄| 蜜桃av免费在线观看| 日韩中文字幕免费看| 大胆国模一区二区三区| 欧美精品亚洲一区二区在线播放| 90岁老太婆乱淫| 成人免费视频视频在线观看免费| 日本私人影院在线观看| 人妻精品久久久久中文| 男女午夜激烈无遮挡| 日韩乱码一区二区三区| 日韩在线看片| 日本高清视频精品| 色一情一区二区三区| 亚洲成人不卡| 清纯唯美激情亚洲| 五月天欧美精品| 成人在线不卡| 久久久久亚洲av片无码下载蜜桃| 日韩三级精品电影久久久| 亚洲午夜激情网页| 中文字幕不卡每日更新1区2区| 日韩性xxxx| 91免费看国产| 亚洲开发第一视频在线播放| 久久99视频精品| 日本免费一区二区视频| 日韩欧美亚洲在线| 母乳一区在线观看| 黄页视频在线播放| 99热这里精品| 在线不卡a资源高清| 欧美jizzhd69巨大| 亚洲日本久久久| 91麻豆免费看| 国产成人无码一区二区三区在线| 很黄很色的网站| 精品美女一区二区| 精品久久香蕉国产线看观看亚洲| 自拍偷拍福利视频| 午夜久久久精品| 狠久久av成人天堂| 翁止熄痒禁伦短文合集免费视频| 4480yy私人影院高清不卡| 91精品丝袜国产高跟在线| 北条麻妃在线一区二区免费播放| 老司机亚洲精品一区二区| 久久精品久久精品久久| 国内揄拍国内精品久久| 欧美视频一区在线观看| 久久精品影视| 欧美午夜片在线免费观看| 999在线观看免费大全电视剧| 在线丝袜欧美日韩制服| 香蕉免费毛片视频| 黄色网在线免费看| 日韩欧美国产网站| 啦啦啦啦免费高清视频在线观看1| 亚洲欧美色图| 亚洲国产精品久| 波多野结衣亚洲色图| 久久99精品国产| 久久精品99国产精品酒店日本| 欧美 另类 交| 影院在线观看全集免费观看| 国产亚洲一本大道中文在线| 日韩风俗一区 二区| 久久精品一区二区三区四区五区| 美女www一区二区| 黄频免费在线观看| 欧美三级黄视频| 亚洲欧美一区二区原创| 可以在线看的av网站| 国产又粗又长又爽视频| 天天干,天天操,天天射| 国产三级精品网站| 成人网欧美在线视频| 日韩欧美三级在线观看| 一级毛片免费观看| 电影久久久久久| 欧美大人香蕉在线| 久久久久久91亚洲精品中文字幕| 国产精品精品软件男同| 久久99蜜桃精品久久久久小说| 99产精品成人啪免费网站| 一区二区三区回区在观看免费视频| 这里只有精品999| 林ゆな中文字幕一区二区| 你懂的在线网址| 黄色av一级片| 亚洲精品久久7777777| 欧美牲交a欧美牲交aⅴ免费真| 精品日产卡一卡二卡麻豆| 亚洲一区中文字幕在线观看| 日韩精品极品视频在线观看免费| 日韩一区二区三区免费观看| av免费不卡国产观看| 精品人妻大屁股白浆无码| 久久精品99国产精品| 欧美精品一区二区蜜桃| 国产黄色一区二区三区| 日韩精品无码一区二区三区| 久久国产日韩欧美精品| 天天摸夜夜添狠狠添婷婷| 亚洲天堂视频在线观看| www.国产com| 日韩精品一区二区三区免费视频| 色婷婷综合网| 台湾佬综合网| 色视频免费版高清在线观看| 国产三级欧美三级| 精品人妻久久久久一区二区三区| 91久久黄色| 丝袜连裤袜欧美激情日韩| av大全在线观看| 在线观看国产精品淫| 亚洲人成网在线播放| 三叶草欧洲码在线| 国产精品国产精品国产专区不片| 国产精品乱人伦| 日韩一级免费在线观看| 黄污视频在线观看| 99综合精品久久| 九色精品视频在线观看| 亚洲 国产 欧美 日韩| 日本不卡一区视频| 狠狠干 狠狠操| 国产美女三级视频| 成人在线激情视频| 中文字幕视频一区二区| 日韩欧美精品网站| 成人妇女淫片aaaa视频| 国产高清在线a视频大全| 亚洲国产免费av| 久久久久久久久久99| 国产主播av在线| 亚洲一区二区免费| 中文字幕一区二区三区四区视频| 亚洲aa在线观看| 国精产品久拍自产在线网站| 欧美性性性性性ⅹxxbbbb| 成人www视频网站免费观看| 成人免费网站视频www| 伊人成综合网站| 亚洲欧洲美洲一区二区三区| 潘金莲激情呻吟欲求不满视频|