點擊上方“IT那活兒”公眾號,關注后了解更多內容,不管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) {
// 動態使用cron表達式設置循環間隔
taskRegistrar.addTriggerTask(new Runnable() {
@Override
public void run() {
logger.info("Current time:{}", LocalDateTime.now());
}
}, new Trigger() {
@Override
public Date nextExecutionTime(TriggerContext triggerContext) {
// 使用CronTrigger觸發器,可動態修改cron表達式來操作循環規則
CronTrigger cronTrigger = new CronTrigger(cron);
Date nextExecutionTime = cronTrigger.nextExecutionTime(triggerContext);
// 使用不同的觸發器,為設置循環時間的關鍵,區別于CronTrigger觸發器,該觸發器可隨意設置循環間隔時間,單位為毫秒
// PeriodicTrigger periodicTrigger = new PeriodicTrigger(timer);
// Date nextExecutionTime = periodicTrigger.nextExecutionTime(triggerContext);
return nextExecutionTime;
}
});
}
}
此上圖我們可以看出定時任務已經從最開始的10s執行一次變成了20s執行一次。這樣我們就完成了定時任務時間的修改。
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) {
// 動態使用cron表達式設置循環間隔
taskRegistrar.addTriggerTask(new Runnable() {
@Override
public void run() {
logger.info("Current time:{}", LocalDateTime.now());
}
}, new Trigger() {
@Override
public Date nextExecutionTime(TriggerContext triggerContext) {
// 使用CronTrigger觸發器,可動態修改cron表達式來操作循環規則
// CronTrigger cronTrigger = new CronTrigger(cron);
// Date nextExecutionTime = cronTrigger.nextExecutionTime(triggerContext);
// 使用不同的觸發器,為設置循環時間的關鍵,區別于CronTrigger觸發器,該觸發器可隨意設置循環間隔時間,單位為毫秒
PeriodicTrigger periodicTrigger = new PeriodicTrigger(timer);
Date nextExecutionTime = periodicTrigger.nextExecutionTime(triggerContext);
return nextExecutionTime;
}
});
}
}
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129180.html
摘要:也是自帶的一個基于線程池設計的定時任務類。其每個調度任務都會分配到線程池中的一個線程執行,所以其任務是并發執行的,互不影響。 原創不易,如需轉載,請注明出處https://www.cnblogs.com/baixianlong/p/10659045.html,否則將追究法律責任!??! 一、在JAVA開發領域,目前可以通過以下幾種方式進行定時任務 1、單機部署模式 Timer:jdk中...
摘要:而我這里定時任務的觸發是要通過接口的方式來觸發,所以只用實現以下的調度器即可。我這里簡單說下任務的調度器,具體的任務類,觸發器,任務什么時候執行是由它決定的。遇到的坑解決方式這個是因為不兼容的問題,所以使用是不會出現這個錯誤的。 實現定時任務的幾種方式: 1.使用linux的crontab 優點: 1.使用方式很簡單,只要在crontab中寫好 2.隨時可以修改,不需要...
摘要:由于工作上的原因,需要進行定時任務的動態增刪改查,網上大部分資料都是整合框架實現的。本人查閱了一些資料,發現本身就支持實現定時任務的動態控制。 由于工作上的原因,需要進行定時任務的動態增刪改查,網上大部分資料都是整合quertz框架實現的。本人查閱了一些資料,發現springBoot本身就支持實現定時任務的動態控制。并進行改進,現支持任意多參數定時任務配置 實現結果如下圖所示: sho...
摘要:本文使用實現對定時任務的增刪改查啟用停用等功能。并把定時任務持久化到數據庫以及支持集群。決定什么時候來執行任務。定義的是任務數據,而真正的執行邏輯是在中。封裝定時任務接口添加一個暫?;謴蛣h除修改暫停所有恢復所有 簡介 Quartz是一款功能強大的任務調度器,可以實現較為復雜的調度功能,如每月一號執行、每天凌晨執行、每周五執行等等,還支持分布式調度。本文使用Springboot+Myba...
閱讀 1347·2023-01-11 13:20
閱讀 1685·2023-01-11 13:20
閱讀 1133·2023-01-11 13:20
閱讀 1860·2023-01-11 13:20
閱讀 4101·2023-01-11 13:20
閱讀 2705·2023-01-11 13:20
閱讀 1386·2023-01-11 13:20
閱讀 3598·2023-01-11 13:20