點擊上方“IT那活兒”公眾號,關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了?。?!
package com.shsnc.test;
import lombok.Data;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.Trigger;
import org.springframework.scheduling.TriggerContext;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.scheduling.support.PeriodicTrigger;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.Date;
/**
* @Author: duanxichao
* @CreateTime: 2022-10-20 10:38
* @Description: TODO
*/
@Data
@Component
public class TestScheduleTask implements SchedulingConfigurer {
private static final Logger logger = LoggerFactory.getLogger(SchedulingConfigurer.class);
@Value("${scheduled.testCron}")
private String cron;
private Long timer = 10000L;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
// 動態(tài)使用cron表達式設(shè)置循環(huán)間隔
taskRegistrar.addTriggerTask(new Runnable() {
@Override
public void run() {
logger.info("Current time:{}", LocalDateTime.now());
}
}, new Trigger() {
@Override
public Date nextExecutionTime(TriggerContext triggerContext) {
// 使用CronTrigger觸發(fā)器,可動態(tài)修改cron表達式來操作循環(huán)規(guī)則
CronTrigger cronTrigger = new CronTrigger(cron);
Date nextExecutionTime = cronTrigger.nextExecutionTime(triggerContext);
// 使用不同的觸發(fā)器,為設(shè)置循環(huán)時間的關(guān)鍵,區(qū)別于CronTrigger觸發(fā)器,該觸發(fā)器可隨意設(shè)置循環(huán)間隔時間,單位為毫秒
// PeriodicTrigger periodicTrigger = new PeriodicTrigger(timer);
// Date nextExecutionTime = periodicTrigger.nextExecutionTime(triggerContext);
return nextExecutionTime;
}
});
}
}
此上圖我們可以看出定時任務(wù)已經(jīng)從最開始的10s執(zhí)行一次變成了20s執(zhí)行一次。這樣我們就完成了定時任務(wù)時間的修改。
package com.shsnc.test;
import lombok.Data;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.Trigger;
import org.springframework.scheduling.TriggerContext;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.scheduling.support.PeriodicTrigger;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.Date;
/**
* @Author: duanxichao
* @CreateTime: 2022-10-20 10:38
* @Description: TODO
*/
@Data
@Component
public class TestScheduleTask implements SchedulingConfigurer {
private static final Logger logger = LoggerFactory.getLogger(SchedulingConfigurer.class);
@Value("${scheduled.testCron}")
private String cron;
private Long timer = 10000L;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
// 動態(tài)使用cron表達式設(shè)置循環(huán)間隔
taskRegistrar.addTriggerTask(new Runnable() {
@Override
public void run() {
logger.info("Current time:{}", LocalDateTime.now());
}
}, new Trigger() {
@Override
public Date nextExecutionTime(TriggerContext triggerContext) {
// 使用CronTrigger觸發(fā)器,可動態(tài)修改cron表達式來操作循環(huán)規(guī)則
// CronTrigger cronTrigger = new CronTrigger(cron);
// Date nextExecutionTime = cronTrigger.nextExecutionTime(triggerContext);
// 使用不同的觸發(fā)器,為設(shè)置循環(huán)時間的關(guān)鍵,區(qū)別于CronTrigger觸發(fā)器,該觸發(fā)器可隨意設(shè)置循環(huán)間隔時間,單位為毫秒
PeriodicTrigger periodicTrigger = new PeriodicTrigger(timer);
Date nextExecutionTime = periodicTrigger.nextExecutionTime(triggerContext);
return nextExecutionTime;
}
});
}
}
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/129180.html
摘要:也是自帶的一個基于線程池設(shè)計的定時任務(wù)類。其每個調(diào)度任務(wù)都會分配到線程池中的一個線程執(zhí)行,所以其任務(wù)是并發(fā)執(zhí)行的,互不影響。 原創(chuàng)不易,如需轉(zhuǎn)載,請注明出處https://www.cnblogs.com/baixianlong/p/10659045.html,否則將追究法律責任!!! 一、在JAVA開發(fā)領(lǐng)域,目前可以通過以下幾種方式進行定時任務(wù) 1、單機部署模式 Timer:jdk中...
摘要:而我這里定時任務(wù)的觸發(fā)是要通過接口的方式來觸發(fā),所以只用實現(xiàn)以下的調(diào)度器即可。我這里簡單說下任務(wù)的調(diào)度器,具體的任務(wù)類,觸發(fā)器,任務(wù)什么時候執(zhí)行是由它決定的。遇到的坑解決方式這個是因為不兼容的問題,所以使用是不會出現(xiàn)這個錯誤的。 實現(xiàn)定時任務(wù)的幾種方式: 1.使用linux的crontab 優(yōu)點: 1.使用方式很簡單,只要在crontab中寫好 2.隨時可以修改,不需要...
摘要:由于工作上的原因,需要進行定時任務(wù)的動態(tài)增刪改查,網(wǎng)上大部分資料都是整合框架實現(xiàn)的。本人查閱了一些資料,發(fā)現(xiàn)本身就支持實現(xiàn)定時任務(wù)的動態(tài)控制。 由于工作上的原因,需要進行定時任務(wù)的動態(tài)增刪改查,網(wǎng)上大部分資料都是整合quertz框架實現(xiàn)的。本人查閱了一些資料,發(fā)現(xiàn)springBoot本身就支持實現(xiàn)定時任務(wù)的動態(tài)控制。并進行改進,現(xiàn)支持任意多參數(shù)定時任務(wù)配置 實現(xiàn)結(jié)果如下圖所示: sho...
摘要:本文使用實現(xiàn)對定時任務(wù)的增刪改查啟用停用等功能。并把定時任務(wù)持久化到數(shù)據(jù)庫以及支持集群。決定什么時候來執(zhí)行任務(wù)。定義的是任務(wù)數(shù)據(jù),而真正的執(zhí)行邏輯是在中。封裝定時任務(wù)接口添加一個暫?;謴?fù)刪除修改暫停所有恢復(fù)所有 簡介 Quartz是一款功能強大的任務(wù)調(diào)度器,可以實現(xiàn)較為復(fù)雜的調(diào)度功能,如每月一號執(zhí)行、每天凌晨執(zhí)行、每周五執(zhí)行等等,還支持分布式調(diào)度。本文使用Springboot+Myba...
閱讀 1353·2023-01-11 13:20
閱讀 1700·2023-01-11 13:20
閱讀 1211·2023-01-11 13:20
閱讀 1904·2023-01-11 13:20
閱讀 4162·2023-01-11 13:20
閱讀 2751·2023-01-11 13:20
閱讀 1397·2023-01-11 13:20
閱讀 3665·2023-01-11 13:20