在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何動態(tài)添加修改刪除定時任務(wù)?

jf_78858299 ? 來源:SpringBoot ? 作者:林祥纖 ? 2023-04-12 11:06 ? 次閱讀

如何動態(tài)添加修改刪除定時任務(wù)?那么我們一起看看具體怎么實現(xiàn),先看下本節(jié)大綱:

(1)思路說明;

(2)代碼解析;

(3)修改定時任務(wù)執(zhí)行周期特別說明;

接下來看看本節(jié)的大綱:

(1)思路說明;

(a)首先這里我們需要重新認(rèn)識一個類ThreadPoolTaskScheduler:線程池任務(wù)調(diào)度類,能夠開啟線程池進(jìn)行任務(wù)調(diào)度。

(b)ThreadPoolTaskScheduler.schedule()方法會創(chuàng)建一個定時計劃ScheduledFuture,在這個方法需要添加兩個參數(shù),Runnable(線程接口類)和CronTrigger(定時任務(wù)觸發(fā)器)

(c)在ScheduledFuture中有一個cancel可以停止定時任務(wù)。

(2)代碼解析;

根據(jù)以上的思路分析,我們很容易就知道如何進(jìn)行編碼了,先提供代碼如下:

package com.kfit.task;

import java.util.Date;

**import **java.util.concurrent.ScheduledFuture;

**import **org.springframework.beans.factory.annotation.Autowired;

**import **org.springframework.context.annotation.Bean;

importorg.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;

**import **org.springframework.scheduling.support.CronTrigger;

**import **org.springframework.stereotype.Component;

**import **org.springframework.web.bind.annotation.RequestMapping;

**import **org.springframework.web.bind.annotation.RestController;

/**

  • @author Angel --守護(hù)天使
  • @version v.0.1
  • @date 2017年4月6日

*/

@RestController

@Component

**public **class DynamicTask {

@Autowired

**private** ThreadPoolTaskSchedulerthreadPoolTaskScheduler;



**private **ScheduledFuture? future;



@Bean

**public** ThreadPoolTaskSchedulerthreadPoolTaskScheduler() {

   **return****new**ThreadPoolTaskScheduler();

}



@RequestMapping("/startCron")

**public** String startCron() {

   future = threadPoolTaskScheduler.schedule(**new** MyRunnable(), **new** CronTrigger("0/5 * * * * *"));

   System. ***out*** .println("DynamicTask.startCron()");

    **return ** "startCron";

}



@RequestMapping("/stopCron")

**public** String stopCron() {

   **if** (future !=  **null** ) {

       future.cancel( **true** );

   }

   System. ***out*** .println("DynamicTask.stopCron()");

    **return ** "stopCron";

}



@RequestMapping("/changeCron10")

**public** String startCron10() {

   stopCron();// 先停止,在開啟.

   future = threadPoolTaskScheduler.schedule(**new** MyRunnable(), **new** CronTrigger("*/10 * * * * *"));

   System. ***out*** .println("DynamicTask.startCron10()");

    **return ** "changeCron10";

}



**private ****class** MyRunnable **implements** Runnable {

   @Override

   **public ****void** run() {

       System. ***out*** .println("DynamicTask.MyRunnable.run()," + **new** Date());

   }

}

}

(a)我們首先了一個類DynamicTask;

(b)定義了兩個變量,threadPoolTaskScheduler和future 其中future是treadPoolTaskScheduler執(zhí)行方法schedule的返回值,主要用于定時任務(wù)的停止。

(c)編寫啟動定時器的方法startCron();

(d)編寫停止方法stopCron(),這里編碼的時候,需要注意下需要判斷下future為null的時候,不然就很容易拋出NullPointerException;

(e)編寫修改定時任務(wù)執(zhí)行周期方法changeCron10(),這里的原理就是關(guān)閉之前的定時器,創(chuàng)新在創(chuàng)建一個新的定時器。

(3)修改定時任務(wù)執(zhí)行周期特別說明;

在上一篇博客中,我們使用了一種方式通過全局變量的方式修改cron參數(shù)的值,那么在這里的我們也是可以這么做的,這里簡單提供下思路,大家自己去實現(xiàn)。

注意ThreadPoolTaskScheduler中的schedule()第二個參數(shù)支持Trigger:

ThreadPoolTaskScheduler.schedule([Runnable]( "in java.lang") arg0, [Trigger]( "in org.springframework.scheduling")arg1)

那么我們就可以自己定義一個Trigger,然后動態(tài)進(jìn)行修改了,這里提供核心的代碼如下:

private String cronStr = "*/5 * * * * *";

@RequestMapping("/startCron1")

**public** String startCron1(){

    System. ***out*** .println("startCron1 >>>>");

    threadPoolTaskScheduler.schedule(**new** MyRunnable(), **new** Trigger(){

        @Override

        **public** DatenextExecutionTime(TriggerContext triggerContext){

            **return****new** CronTrigger(cronStr).nextExecutionTime(triggerContext);

        }

    });

    System. ***out*** .println("startCron1 <<<<");

     **return ** "startCron1";

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2967

    瀏覽量

    104749
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4788

    瀏覽量

    68603
收藏 人收藏

    評論

    相關(guān)推薦

    請問怎么批量修改刪除相同元器件的名字?

    怎么批量的修改刪除相同元器件的名字,比如電阻的RES2或者Headr 3H這個名字?
    發(fā)表于 09-29 05:20

    linux的循環(huán)定時任務(wù)

    linux循環(huán)定時任務(wù)
    發(fā)表于 05-20 14:59

    busybox用crontab/crond在嵌入式系統(tǒng)中添加定時任務(wù)的方法

    busybox 用crontab、crond在嵌入式系統(tǒng)中添加定時任務(wù):參考文檔:在嵌入式系統(tǒng)中,定時任務(wù)通過crond和cronttab兩個系統(tǒng)命令來聯(lián)合執(zhí)行。其中crond是定時任務(wù)的守護(hù)進(jìn)程
    發(fā)表于 12-14 06:40

    SpringBoot如何實現(xiàn)動態(tài)增刪啟停定時任務(wù)

    這兩種方式不能動態(tài)添加刪除、啟動、停止任務(wù)。 要實現(xiàn)動態(tài)增刪啟停定時任務(wù)功能,比較廣泛的做法是
    的頭像 發(fā)表于 09-24 09:49 ?2947次閱讀
    SpringBoot如何實現(xiàn)<b class='flag-5'>動態(tài)</b>增刪啟停<b class='flag-5'>定時任務(wù)</b>

    Python定時任務(wù)的實現(xiàn)方式

    在日常工作中,我們常常會用到需要周期性執(zhí)行的任務(wù),一種方式是采用 Linux 系統(tǒng)自帶的 crond 結(jié)合命令行實現(xiàn)。另外一種方式是直接使用Python。接下來整理的是常見的Python定時任務(wù)
    的頭像 發(fā)表于 10-08 15:20 ?5733次閱讀

    如何在SpringBoot項目中實現(xiàn)動態(tài)定時任務(wù)

    之前寫過文章記錄怎么在SpringBoot項目中簡單使用定時任務(wù),不過由于要借助cron表達(dá)式且都提前定義好放在配置文件里,不能在項目運(yùn)行中動態(tài)修改任務(wù)執(zhí)行時間,實在不太靈活。
    的頭像 發(fā)表于 09-30 11:16 ?1812次閱讀

    解析Golang定時任務(wù)庫gron設(shè)計和原理

    正巧,最近看到了 gron 這個開源項目,它是用 Golang 實現(xiàn)一個并發(fā)安全的定時任務(wù)庫。實現(xiàn)非常簡單精巧,代碼量也不多。今天我們就來一起結(jié)合源碼看一下,怎樣基于 Golang 的能力做出來一個【定時任務(wù)庫】。
    的頭像 發(fā)表于 12-15 13:57 ?1339次閱讀

    求一種SpringBoot定時任務(wù)動態(tài)管理通用解決方案

    SpringBoot的定時任務(wù)的加強(qiáng)工具,實現(xiàn)對SpringBoot原生的定時任務(wù)進(jìn)行動態(tài)管理,完全兼容原生@Scheduled注解,無需對原本的定時任務(wù)進(jìn)行
    的頭像 發(fā)表于 02-03 09:49 ?782次閱讀

    SpringBoot如何實現(xiàn)定時任務(wù)(下)

    SpringBoot創(chuàng)建定時任務(wù)的方式很簡單,主要有兩種方式:一、基于注解的方式(@Scheduled)二、數(shù)據(jù)庫動態(tài)配置。實際開發(fā)中,第一種需要在代碼中寫死表達(dá)式,如果修改起來,又得重啟會顯得很麻煩;所以我們往往會采取第二種方
    的頭像 發(fā)表于 04-07 14:51 ?1237次閱讀
    SpringBoot如何實現(xiàn)<b class='flag-5'>定時任務(wù)</b>(下)

    SpringBoot如何實現(xiàn)定時任務(wù)(上)

    SpringBoot創(chuàng)建定時任務(wù)的方式很簡單,主要有兩種方式:一、基于注解的方式(@Scheduled)二、數(shù)據(jù)庫動態(tài)配置。實際開發(fā)中,第一種需要在代碼中寫死表達(dá)式,如果修改起來,又得重啟會顯得很麻煩;所以我們往往會采取第二種方
    的頭像 發(fā)表于 04-07 14:51 ?1349次閱讀
    SpringBoot如何實現(xiàn)<b class='flag-5'>定時任務(wù)</b>(上)

    在Spring Boot中如何使用定時任務(wù)

    本文介紹在 Spring Boot 中如何使用定時任務(wù),使用非常簡單,就不做過多說明了。
    的頭像 發(fā)表于 04-12 10:56 ?975次閱讀

    如何動態(tài)修改cron參數(shù)呢?

    按正常來講,修改定時任務(wù)的執(zhí)行周期,把服務(wù)停下來,改下任務(wù)的cron參數(shù),再重啟服務(wù)就搞搞定了。這種方式很簡單,沒有可說的,但是有沒有一種可能,在不停服務(wù)的情況下,就可以動態(tài)修改任務(wù)
    的頭像 發(fā)表于 04-12 11:04 ?1920次閱讀

    Linux如何使用cron進(jìn)行定時任務(wù)的操作

    按計劃執(zhí)行命令對于計算機(jī)來說非常重要,因為假如我親自去執(zhí)行一些任務(wù)的話,可能會因為多方面因素不能按時執(zhí)行,所以定時任務(wù)就顯得非常重要了! cron就是一個能夠執(zhí)行定時任務(wù)的命令,其實該命令本身不難,下面小編帶您詳細(xì)了解!
    的頭像 發(fā)表于 05-12 16:27 ?2059次閱讀

    python定時任務(wù)實踐

    由于程序需求,監(jiān)測配置變化需要設(shè)置定時任務(wù),每分鐘執(zhí)行一次,對任務(wù)持久化要求不高,不需要時可以關(guān)閉定時任務(wù)
    的頭像 發(fā)表于 05-20 17:53 ?977次閱讀
    python<b class='flag-5'>定時任務(wù)</b>實踐

    linux定時任務(wù)的用法總結(jié)

    習(xí)慣了使用 windows 的計劃任務(wù),使用 linux 中的 crontab 管理定時任務(wù)時很不適應(yīng)。
    的頭像 發(fā)表于 08-14 18:16 ?850次閱讀
    linux<b class='flag-5'>定時任務(wù)</b>的用法總結(jié)
    主站蜘蛛池模板: 欧美一级高清免费a| 四虎最新影院| 老司机亚洲精品影院在线观看| 亚洲国产精品嫩草影院| 色天使在线观看| www.色日本| caobi在线观看| 亚洲va久久久噜噜噜久久| 色噜噜在线视频| 99色视频在线观看| 久久天天躁狠狠躁夜夜2020一| 五月激情啪啪网| 狠狠色噜狠狠狠狠| 色香蕉在线视频| 4hu影院在线观看| 久久天天干| 最好看免费中文字幕2018视频| 久久综合九色综合欧洲色| 午夜一区二区三区| 亚洲日本在线观看| 欧美成人精品一级高清片| 爱情社保片鲁丝片一区| 久久久夜夜夜| 亚洲瑟瑟网| se94se欧美| 亚洲专区一路线二| 色月| 一级特黄a免费大片| 视频在线观看免费播放www| 欧美最猛性xxxx高清| 色综合天天综合网国产国产人 | 日日操日日爽| 亚洲综合一二三区| 六月天色婷婷| 超黄视频在线观看| 日韩怡红院| 久久久久久国产精品mv| 他也色在线| 日本一本高清视频| 欧美视频一区二区三区在线观看| 日本黄色小视频|