一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java定時任務的實現方式

java定時任務的實現方式

2020-03-31 11:38lijiao JAVA教程

這篇文章主要介紹了java定時任務的實現方式,在應用里經常都有用到在后臺跑定時任務的需求,如何進行java定時任務,本文為大家進行講解,感興趣的小伙伴們可以參考一下

在開發測試工具的應用后臺,經常聽到同事說要做個定時任務把做日志處理,或者數據清理,包括做些復雜的業務計算邏輯,在選擇定時任務的時候,怎么能夠快速實現,并且選擇一種更適合自己的方式呢? 我這里把定時任務的實現收集整理了一些方法,希望可以幫到剛開始做定時任務的同學,寫得不對的地方請指正。
一  Java 基本的定時任務,總結方法有三種:

1.1   創建一個thread,然后讓它在while循環里一直運行著,通過sleep方法來達到定時任務的效果;

java定時任務的實現方式

1.2   用Timer和TimerTask與第一種方法相比有如下好處:

  • 當啟動和去取消任務時可以控制
  • 第一次執行任務時可以指定你想要的delay時間

java定時任務的實現方式

1.3   用ScheduledExecutorService是從的java.util.concurrent里,做為并發工具類被引進的,這是最理想的定時任務實現方式,相比于上兩個方法,它有以下好處:

  • 相比于Timer的單線程,它是通過線程池的方式來執行任務的
  • 可以很靈活的去設定第一次執行任務delay時間
  • 提供了良好的約定,以便設定執行的時間間隔

二  Spring 定時任務,總結方式也有三種:

2.1    ScheduledTimerTask:  Spring的ScheduledTimerTask定義了一個定時器任務的運行周期,遺憾的是,你可以指定任務執行的頻度,但你無法精確指定它何時運行,這就需要用到第二種Quartz進行任務調度;

       創建一個業務任務,在Spring配置文件中聲明 ;
       在Spring 配置文件中,配置ScheduledTimerTask ,并且關聯上自定義的任務實例;
       啟動定時器,Spring的TimerFactoryBean負責啟動定時任務

java定時任務的實現方式

java定時任務的實現方式

 2.2    使用 Quartz:
 首先還是老樣子定義業務邏輯任務:

java定時任務的實現方式

在Spring中聲明并且配置作業調度的觸發方式

java定時任務的實現方式

這里 Quartz的作業觸發器有兩種,分別是
org.springframework.scheduling.quartz.SimpleTriggerBean
org.springframework.scheduling.quartz.CronTriggerBean

 第一種SimpleTriggerBean,只支持按照一定頻度調用任務,如每隔一段時間運行一次。

?
1
2
3
4
5
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
  <property name="jobDetail" ref="myJob" />
  <property name="startDelay" value="0" /><!-- 調度工廠實例化后,經過0秒開始執行調度 -->
  <property name="repeatInterval" value="2000" /><!-- 每2秒調度一次 -->
</bean>

第二種CronTriggerBean,支持到指定時間運行一次,如每天12:00運行一次,如上配置;
配置調度工廠
org.springframework.scheduling.quartz.SchedulerFactoryBean,代碼如上;
啟動你的應用即可

 2.3   使用 Spring-Task
         Spring自帶的定時任務工具,spring task,可以將它比作一個輕量級的Quartz,而且使用起來很簡單,除spring相關的包外不需要額外的包,而且支持注解和配置文件兩種:
         第一步:編寫任務類;TaskJob,method job1  --代碼省略
         第二步:在spring配置文件頭中添加命名空間及描述

?
1
2
3
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:task="http://www.springframework.org/schema/task"
  xsi:schemaLocation="http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">

        第三步:spring配置文件中設置具體的任務

?
1
2
3
4
<task:scheduled-tasks> 
    <task:scheduled ref="taskJob" method="job1" cron="0 * * * * ?"/> 
</task:scheduled-tasks>
<context:component-scan base-package="com.alibaba.mytask" />

說明:ref參數指定的即任務類,method指定的即需要運行的方法,cron及cronExpression表達式,具體寫法這里不介紹了,<context:component-scan base-package="com.alibaba.mytask" />spring掃描注解用的。

以上就是本文的全部內容,希望對大家的學習有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 973影院| 国产一区二区免费视频 | 婷婷综合久久 | 日韩免费观看成第15集 | 四虎库 | 沟厕okn系列在线播放 | 日韩 国产 欧美 精品 在线 | 国产专区亚洲欧美另类在线 | 深夜在线小视频 | 好湿好紧太硬了我好爽 | 波多野结衣女教师在线观看 | 双性肉文高h | 92国产福利视频一区二区 | 好大好长好紧爽免费 | 亚洲成人看片 | 香港三级浴室女警官 | 国产精品微拍 | 亚洲第一人黄所 | 美女mm131爽爽爽久久 | 狠狠做五月深爱婷婷天天综合 | 亚洲AV蜜桃永久无码精品无码网 | xnxx老师 | 我的青梅竹马是消防员2季未增删免费 | 特级淫片欧美高清视频蜜桃 | 第一次不是你高清在线观看 | 免费aⅴ在线 | 干操网 | 久久伊人在 | 3d动漫h在线观看网站蜜芽 | wwwav视频| 天天躁天天碰天天看 | 午夜福利试看120秒体验区 | 欧美理论片手机在线观看片免费 | 国产成人在线视频 | 国产精品久久毛片完整版 | 奇米影视7777| 国产欧美二区三区 | 亚瑟天堂久久一区二区影院 | 嫩草影院地址一地址二 | 人妖欧美一区二区三区四区 | 国产码一区二区三区 |