java后端--定時任務

定時任務

    • 一、簡述
    • 二、注解
      • 1.@Scheduled
        • 屬性:
      • 2.@EnableScheduling
    • 三、案例

一、簡述

在java后端開發中,經常遇到一些任務需要頻繁發生,每次都人工調用太麻煩,這時就用到了定時任務進行自動化調用,大大便利了程序員的開發工作并可以實現某種場景下的一些功能。

二、注解

1.@Scheduled

是Spring框架中的,可以講一個方法標記為定時任務,被標注的方法必須是無返回值類型(void),且方法不能有參數。

屬性:

①fixedRate:時間間隔,單位為毫秒。無論任務執行時長如何,下一次任務都會在上一次任務開始后的指定時間間隔后啟動。

②fixedDelay:任務完成后,下一次任務開始前的延遲時間,單位為毫秒。

③initialDelay:指定任務首次執行前的延遲時間,單位為毫秒。

④cron:使用Cron表達式指定任務的執行時間
由6或7個時間字段構成,空格分隔
秒 分 時 日 月 周 【年】

*:表示所有值,例如在“分” 位置用 ,表示每分鐘都執行
?:表示不指定值,只能在 “日” “月” 字段
-:表示范圍,10-12表示在十點到十二點
,:表示與的關系,“1,2,3”表示這三個時間點都執行
/:表示間隔時間,例如0/15在 “分” 位置表示從0開始,每隔十五分鐘執行一次

例子:
0 30 9 * * MON-FRI:周一至周五的上午 9:30 執行。
0 0 12 1/5 * ?:每月的第 1 天開始,每 5 天的中午 12 點執行。

2.@EnableScheduling

屬于Spring框架,用于啟動Spring的定時任務功能。只能在配置類上使用,自動掃描帶有@Scheduled注解的方法,注冊為定時任務

一般用在Application.java 啟動類上

三、案例

@Component
public class ScheduledTasks {// 每隔 5 秒執行一次@Scheduled(fixedRate = 5000)public void fixedRateTask() {System.out.println("Fixed rate task executed at " + System.currentTimeMillis());}// 任務執行完成后,延遲 3 秒再執行下一次@Scheduled(fixedDelay = 3000)public void fixedDelayTask() {System.out.println("Fixed delay task executed at " + System.currentTimeMillis());}// 首次延遲 2 秒后開始執行,之后每隔 4 秒執行一次@Scheduled(initialDelay = 2000, fixedRate = 4000)public void initialDelayTask() {System.out.println("Initial delay task executed at " + System.currentTimeMillis());}// 每天凌晨 2 點執行@Scheduled(cron = "0 0 2 * * ?")public void cronTask() {System.out.println("Cron task executed at " + System.currentTimeMillis());}
}

特定場景下:
如果用戶的注冊到期了,五分鐘后給他自動禁用

@Slf4j
@Component
public class UserDisable {@Resourceprivate UserMapper userMapper;@Resourceprivate UserService userService;@Scheduled(cron = "0 0 7 * * ?")   //每日七點執行一次public void disableUsers(){try {Calendar calendar = Calendar.getInstance();calendar.add(Calendar.DAY_OF_YEAR, 0);calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, -5);calendar.set(Calendar.SECOND, 0);calendar.set(Calendar.MILLISECOND, 0);Date sDaysAgo = calendar.getTime();//查詢有哪些用戶到期List<Long> idList = userMapper.selectByEndTime(sDaysAgo);//禁用操作for (Long id : idList) {userService.disabled(id);}}catch (Exception e){e.getMessage();}}
}

別忘了在啟動類上加@EnableScheduling進行啟用定時任務

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/73150.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/73150.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/73150.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JVM垃圾回收面試題及原理

1. 對象什么時候可以被垃圾器回收 如果一個或多個對象沒有任何的引用指向它了&#xff0c;那么這個對象現在就是垃圾&#xff0c;如果定位了垃圾&#xff0c;則有可能會被垃圾回收器回收 如果要定位什么是垃圾&#xff0c;有兩種方式來確定 引用計數法可達性分析算法 1.1 …

《Mycat核心技術》第19章:基于MySQL實現讀寫分離

作者&#xff1a;冰河 星球&#xff1a;http://m6z.cn/6aeFbs 博客&#xff1a;https://binghe.gitcode.host 文章匯總&#xff1a;https://binghe.gitcode.host/md/all/all.html 星球項目地址&#xff1a;https://binghe.gitcode.host/md/zsxq/introduce.html 沉淀&#xff0c…

【安卓逆向】安卓病毒介紹及其簡單案例分析

目錄 引言 一、Android 病毒介紹及分析方法 1.1 Android 病毒預覽 1.2 Android 病毒分析必備知識 1.3 Android 病毒的常見類型及惡意行為 1.3.1 常見病毒類型 1.3.2 常見病毒行為 1.4 病毒激活條件 1.5 Android 病毒的傳播方式 1.6 Android 病毒分析的一般方法 二…

基于LabVIEW的腳本化子VI動態生成

該示例展示了一種利用LabVIEW VI腳本&#xff08;VI Scripting&#xff09;技術&#xff0c;通過程序化方式動態生成并替換子VI的解決方案。核心邏輯為&#xff1a;基于預定義的模板VI&#xff0c;根據用戶選擇的數學操作&#xff08;加法或乘法&#xff09;&#xff0c;自動生…

機器學習之超參數優化(Hyperparameter Optimization)

超參數優化(Hyperparameter Optimization) 1. 簡介 在機器學習和深度學習中,超參數(Hyperparameters) 是在訓練之前需要設定的參數,例如學習率(learning rate)、批量大小(batch size)、神經網絡的層數等。與訓練過程中自動學習的模型參數(如權重和偏置)不同,超參…

Manus 演示案例:谷歌公司運營模擬器游戲體驗

一、項目背景與愿景 在科技行業蓬勃發展的當下&#xff0c;谷歌作為行業巨頭&#xff0c;其成長歷程充滿了無數值得深入探究的決策智慧。這些決策不僅塑造了谷歌的輝煌&#xff0c;也為全球企業的發展提供了寶貴的借鑒。本項目旨在打造一款以谷歌公司發展為藍本的運營模擬器游戲…

es-索引詳解

在 Elasticsearch 中&#xff0c;**索引&#xff08;Index&#xff09;**是核心概念之一&#xff0c;類似于關系型數據庫中的“表”。索引用于存儲、組織和檢索文檔&#xff08;Document&#xff09;。以下是關于 Elasticsearch 索引的詳細解析&#xff1a; 1. 索引的基本概念 …

基于策略模式的智能提示語生成器設計與實現——以Tkinter GUI開發為例

基于策略模式的智能提示語生成器設計與實現——以Tkinter GUI開發為例 一、引言&#xff1a;智能化時代的提示工程工具 在人工智能技術廣泛應用的時代背景下&#xff0c;如何與AI模型進行有效交互已成為關鍵技能。本文介紹的"AI任務需求與提示語策略生成器"正是基于…

01 | Go 項目開發極速入門課介紹

提示&#xff1a; 所有體系課見專欄&#xff1a;Go 項目開發極速入門實戰課。 你好&#xff0c;歡迎學習本課程。本課程是一個 Go 項目開發極速入門課程。旨在幫助剛學習完 Go 基礎語法的 Go 開發者&#xff0c;快速掌握如何開發一個功能相對全面的 Go 項目。 根據課程設計目標…

密閉空間可燃氣體監測終端:守護城市命脈,智馭燃氣安全!

近年來&#xff0c;陜西省高度重視燃氣安全&#xff0c;出臺了一系列政策文件&#xff0c;旨在全面加強城鎮燃氣安全監管&#xff0c;防范化解重大安全風險。2023年&#xff0c;陜西省安委會印發《全省城鎮燃氣安全專項整治工作方案》&#xff0c;明確要求聚焦燃氣經營、輸送配…

大白話react第十八章React 與 WebGL 項目的高級拓展與優化

大白話react第十八章React 與 WebGL 項目的高級拓展與優化 1. 實現 3D 模型的導入與動畫 在之前的基礎上&#xff0c;我們可以導入更復雜的 3D 模型&#xff0c;并且讓這些模型動起來&#xff0c;就像在游戲里看到的角色和場景一樣。這里我們使用 GLTF 格式的模型&#xff0c…

有關Java中的多線程

學習目標 ● 掌握線程相關概念 ● 掌握線程的基本使用 ● 掌握線程池的使用 ● 了解解決線程安全方式 1.為什么要學習線程? ● 從1946年2月14日世界上第一臺計算機在美國賓夕法尼亞大學誕生到今天&#xff0c;計算和處理的模式早已從單用戶單任務的串行模式發展到了多用戶多…

Spring Boot集成EasyExcel

1. 初始化Spring Boot項目 首先&#xff0c;使用Spring Initializr&#xff08;https://start.spring.io/&#xff09;生成一個基本的Spring Boot項目。選擇以下依賴項&#xff1a; Spring WebLombok (用于減少樣板代碼)SLF4J (用于日志記錄) 2. 添加依賴 在你的pom.xml文件…

(2025|ICLR|廈大華為,LoSA,基于表示互信息的動態層級稀疏率,基于重構誤差的秩分配)LLM 的動態低秩稀疏自適應

Dynamic Low-Rank Sparse Adaptation for Large Language Models 目錄 1. 引言 1.1 關鍵詞 2. 方法 2.1 預備知識 2.2 層級稀疏率確定 2.3 稀疏感知的秩分配 2.4 動態稀疏與適配 3. 實驗 3.1 實驗設置 3.2 語言建模 3.3 零樣本任務 3.4 N:M 稀疏性 3.5 消融實驗 …

p5.js:sound(音樂)可視化,動畫顯示音頻高低變化

本文通過4個案例介紹了使用 p5.js 進行音樂可視化的實踐&#xff0c;包括將音頻振幅轉化為圖形、生成波形圖。 承上一篇&#xff1a;vite&#xff1a;初學 p5.js demo 畫圓圈 cd p5-demo copy .\node_modules\p5\lib\p5.min.js . copy .\node_modules\p5\lib\addons\p5.soun…

linux 進程和計劃管理

查看進程 在Linux系統中&#xff0c;有多個命令可以用來查看進程 以下是一些常用的命令&#xff1a; ps命令&#xff1a;用于查看當前系統中的進程狀態。 基本用法&#xff1a;ps -ef&#xff0c;該命令會以完整格式顯示所有進程的詳細信息&#xff0c;包括用戶ID、進程ID、父…

DeepSeek 多模態大模型 Janus-Pro 本地部署教程

下載模型倉庫 git clone https://github.com/deepseek-ai/Janus.git 國內下載倉庫失敗時&#xff0c;可以使用以下代理&#xff1a; git clone https://github.moeyy.xyz/https://github.com/deepseek-ai/Janus.git 準備 Conda 3.12 虛擬環境 conda create --name deepseek7B p…

Qt開源控件庫(qt-material-widgets)的編譯及使用

項目簡介 qt-material-widgets是一個基于 Qt 小部件的 Material Design 規范實現。 項目地址 項目地址&#xff1a;qt-material-widgets 本地構建環境 Win11 家庭中文版 VS2019 Qt5.15.2 (MSVC2019) 本地構建流程 克隆后的目錄結構如圖&#xff1a; 直接使用Qt Crea…

ARM 嵌入式處理器內核與架構深度剖析(2): ARM 處理器架構剖析

目錄 一、ARM處理器架構剖析 1.1. 指令集架構&#xff08;ISA&#xff09; 1.2. 寄存器集 1.3. 存儲模型 1.4. 異常模型 二、架構設計精要 2.1 處理器模式與特權分級 2.2 寄存器銀行化技術 2.3 指令集演化 三、微架構核心技術 3.1 流水線創新 3.2 內存子系統 3.3 …

Flutter 按鈕組件 TextButton 詳解

目錄 1. 引言 2. TextButton 的基本用法 3. 主要屬性 4. 自定義按鈕樣式 4.1 修改文本顏色 4.2 添加背景色 4.3 修改按鈕形狀和邊距 4.4 樣式定制 5. 高級應用技巧 5.1 圖標文本組合 5.2 主題統一配置 5.3 動態交互 6. 性能優化與注意事項 6.1 點擊區域優化 6.…