日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 动态添加定时器_quartz实现任务动态增加和删除

發(fā)布時間:2024/7/23 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 动态添加定时器_quartz实现任务动态增加和删除 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

場景

這幾天做項目的時候遇到了個狀態(tài)自動切換的場景。該場景具體情況如下:

用戶可以創(chuàng)建多個活動

活動有開始時間和結(jié)束時間

活動有個狀態(tài):未上線、未開始(上線但未到開始時間)、進行中(上線且處于開始時間和結(jié)束時間之間)、已結(jié)束(上線且處于活動結(jié)束時間之后)

在上訴條件下自動切換活動狀態(tài),切換時間點為:活動開始時間(未開始->進行中);活動結(jié)束時間(進行中->已結(jié)束)

分析

根據(jù)場景中出現(xiàn)的情況,一個定時器就可以解決問題,只需要添加定時任務在指定時間進行活動狀態(tài)切換即可。可以在活動上線的時候為每個活動創(chuàng)建一個定時任務,由于活動可以在進行中下線,所以在執(zhí)行上線操作的時候需要判斷上線后的活動狀態(tài),然后根據(jù)活動當前狀態(tài)創(chuàng)建當時任務;在活動下線的時候關(guān)閉該活動的任務。

java解決定時任務的方法較為常用的是有兩種方法:java.util.Timer 和org.quartz;這兩種方式各有起優(yōu)缺點,Timer實現(xiàn)起來非常簡單,只需要實現(xiàn)一個TimerTask即可進行定時任務調(diào)度,但是Timer定時任務存在幾個缺點導致在實際開發(fā)中很少用其作為定時器,以下是timer和quartz相比的不足:

java定時器沒有持久化機制

java定時器的日程管理不夠靈活

java定時器沒有使用線程池

java定時器么有確切的管理方案

生成環(huán)境中更多是使用quartz來做定時任務的開發(fā),本文主要講解quartz如何添加定時任務和刪除定時任務。

quartz介紹

Quartz是OpenSymphony開源組織在Job scheduling領域又一個開源項目,它可以與J2EE與J2SE應用程序相結(jié)合也可以單獨使用。Quartz可以用來創(chuàng)建簡單或為運行十個,百個,甚至是好幾萬個Jobs這樣復雜的程序。Jobs可以做成標準的Java組件或 EJBs。

job quartz核心任務接口,實現(xiàn)execute方法即可

jobDetail quartz為調(diào)度器可以識別的任務詳情對象,該對象包含任務的唯一key值,以及任務人發(fā)執(zhí)行所需參數(shù)等

trigger 任務執(zhí)行觸發(fā)器,指定任務執(zhí)行時間等

scheduler quartz核心調(diào)度器,將jobDetail和trigger結(jié)合起來調(diào)度定時任務

實現(xiàn)案例(并非解決上訴場景代碼)

實現(xiàn)Job接口

package java;

import org.quartz.Job;

import org.quartz.JobDataMap;

import org.quartz.JobExecutionContext;

import org.quartz.JobExecutionException;

/**

* Created by Lethe on 2017/3/29.

* 該任務將在被觸發(fā)的時候?qū)⑤敵?#xff1a; hello ${name}

*/

public class QuartzJob implements Job {

public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {

JobDataMap map = jobExecutionContext.getJobDetail().getJobDataMap();

System.out.println("hello "+ map.getString("name"));

}

}

任務調(diào)度

package org.hanmeis;

import org.quartz.JobDataMap;

import org.quartz.Scheduler;

import org.quartz.SchedulerException;

import org.quartz.impl.JobDetailImpl;

import org.quartz.impl.StdSchedulerFactory;

import org.quartz.impl.triggers.CronTriggerImpl;

import java.text.ParseException;

/**

* Created by Lethe on 2017/3/29.

*/

public class SchedulerTest {

public static void main(String[] args) throws SchedulerException, ParseException {

// 構(gòu)造調(diào)度器,使用標準調(diào)度器工廠獲取默認的調(diào)度器

Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

scheduler.start();

JobDataMap dataMap = new JobDataMap();

dataMap.put("name", "world");

// 構(gòu)造JobDetail,使用默認的JobDetailImpl類

JobDetailImpl detail = new JobDetailImpl();

detail.setJobClass(QuartzJob.class);

detail.setJobDataMap(dataMap);

detail.setName("testJob");

// 構(gòu)造Trigger,使用CronTrigger

CronTriggerImpl cronTrigger = new CronTriggerImpl();

cronTrigger.setCronExpression("00 * 15 29 3 ? 2017");// 如果僅需在指定時間執(zhí)行一次任務,則表達式一般寫法為:00 50 15 29 3 ? 2017(表示在2017-03-29 15:50:00執(zhí)行任務)

cronTrigger.setName("testTrigger");

// 調(diào)度任務

scheduler.scheduleJob(detail, cronTrigger);

}

}

任務動態(tài)增加和刪除

scheduler本身提供任務的裝載、卸載及刷新等接口

Date scheduleJob(JobDetail jobDetail, Trigger trigger) throws SchedulerException;

Date scheduleJob(Trigger trigger) throws SchedulerException;

void scheduleJobs(Map> triggersAndJobs, boolean replace) throws SchedulerException;

void scheduleJob(JobDetail jobDetail, Set extends Trigger> triggersForJob, boolean replace) throws SchedulerException;

boolean unscheduleJob(TriggerKey triggerKey) throws SchedulerException;

boolean unscheduleJobs(List triggerKeys) throws SchedulerException;

Date rescheduleJob(TriggerKey triggerKey, Trigger newTrigger) throws SchedulerException;

引用

quartz[互動百科]:http://www.baike.com/wiki/Quartz

Timer和spring的Quartz兩種定時器的區(qū)別[CSDN]:http://blog.csdn.net/zlxdream815/article/details/8177574

總結(jié)

以上是生活随笔為你收集整理的java 动态添加定时器_quartz实现任务动态增加和删除的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产在线观看免费播放 | 超碰97人| 日韩精品手机在线 | 免费看黄禁片 | 国产福利精品在线观看 | 在线播放你懂得 | 国产综合网站 | 最近中文字幕 | 亚洲va欧美va国产综合久久 | 亚洲作爱网 | 激情婷 | 调教丰满的已婚少妇在线观看 | 奇米狠狠去啦 | 亚洲三级大片 | 久草视频在线免费 | 成人免费黄色网址 | 久草色视频| 亚洲欧美一区二区三区在线观看 | а√天堂8资源中文在线 | 日本xxxx色 | 亚洲砖区免费 | 国产亚洲精品电影 | 成人va在线观看 | 免费裸体视频网站 | 奇米色综合 | 一区不卡在线 | 成人av一区二区三区在线观看 | 久久成人福利视频 | 亚洲熟妇av一区二区三区 | 69国产精品 | 大尺度做爰呻吟舌吻网站 | 亚洲成人av在线播放 | 国产精品免费av一区二区 | 久久精品66 | 国产激情一区 | www.黄色网址 | 国产ts人妖调教重口男 | 中文字幕av影院 | 成人免费毛片足控 | 日本va视频 | 在线天堂资源 | 鲁鲁狠狠狠7777一区二区 | 九九天堂| 青青草视频污 | 一级啪啪片 | 亚洲永久精品国产 | 蜜桃av噜噜一区二区三区小说 | 黄色三及 | 92国产精品| 黄色三级a | 老头老太做爰xxx视频 | 日本视频在线观看免费 | 麻豆影视大全 | 五月天婷婷视频 | 日韩在线影院 | 一个人看的www视频在线观看 | 嫩草www| 日韩av导航| 午夜影院免费 | 一区二区三区高清不卡 | 日本午夜小视频 | 日韩成人综合 | 精品午夜福利在线观看 | 久久天堂影院 | 蜜桃av一区 | 国产精品一区二区视频 | 日韩电影在线观看一区 | 两口子交换真实刺激高潮 | 亚洲精品乱码 | 日韩欧美无 | 二区在线视频 | 亚洲精品久久一区二区三区777 | 久久国产乱子伦免费精品 | 免费拍拍拍网站 | 亚洲欧美精品一区二区 | 欧美 日韩 国产 成人 | 亚洲AV乱码国产精品观看麻豆 | 久久久久亚洲av片无码v | 成人免费黄色网址 | 日韩福利在线视频 | 日韩性xxx | 日韩系列在线 | 看91| 亚洲精品国产视频 | 国产乱人乱精一区二视频国产精品 | 亚洲一级二级三级 | 久热精品视频在线观看 | 欧美极品jizzhd欧美爆 | 777精品视频| 日本韩国欧美一区二区 | av手机在线观看 | 天堂网一区二区 | 精品久久久久成人码免费动漫 | 国产第4页| 成全影视在线观看第8季 | 日韩av免费一区 | 国产又黄又粗又长 | 日本一区免费看 | 久久五|