Quartz 任務調度是什麼
Quartz 是 OpenSymphony 開源組織在 Job scheduling 領域又一個開源項目,它可以與 J2EE 與 J2SE 應用程式相結合也可以單獨使用。 Quartz 是一個完全由 Java 編寫的開源作業排程框架。不要讓作業調度這個術語嚇你。儘管Quartz框架整合了許多額外功能,但就其簡易形式來看,你會發現它易用得簡直讓人受不了!
其實,他還是沒有解釋明白,我簡單說一下:Quartz 作業調度就是可以實現定時任務。它可以實現類似Windows 的任務計劃、我們.Net 下的Windows 服務實現的定時任務等,而且,它與Spring 框架結合起來用起來簡單到爆,爽的受不了,除了時間設定比較晦澀一點...這不重要,待會兒告訴你解決方案。
現在有一個需求:用戶在我們系統完成某個操作,我們用金幣回饋用戶,不過不是即時充值給用戶,考慮性能問題,我們用非同步或我們打算在凌晨一點統一充值到用戶帳戶,因為這個時段用戶比較少。你會怎麼做?
一、新增一個GoldQuartz.java檔
當然你可以跟我一樣,新增一個cn.mayongfa.quartz Package 包,專門用來放執行定時任務的類別。
這個類的目的是用來定時自動給用戶加金幣的。
@Component public class GlodQuartz { /** * 用户自动加金币 * 每天凌晨一点执行一次 */ @Scheduled(cron = "0 0 1 * * ? ") public void addUserGold() { System.out.println("凌晨一点了,你睡了么?"); } /** * 每隔5秒定时清理缓存 */ @Scheduled(cron = "*/5 * * * * ? ") public void cacheClear() { System.out.println("时间又过去5秒了,真令人伤感..."); } }
就完成了?嗯,是的,就這麼簡單。主要涉及到@Scheduled的cron是什麼意思,下面會講怎麼寫和怎麼自動生成,因為現在這樣你完全看不明白。
二、設定springMVC-servlet.xml檔
<!-- 扫描定时作业调度包 --> <task:annotation-driven /> <context:component-scan base-package="cn.mayongfa.quartz"/>
到這其實就這麼簡單就完成了!好用的受不了。配置這個
xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation=" http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd"
運行查看結果
到這裡你就可以根據自己的需求去完成自己想要執行的計時任務了。那我就來仔細講講@Scheduled的cron是什麼意思?
Cron 表達式包含以下 7 個欄位:秒、分、小時、月內日期、月、週內日期、年(選用欄位)。
Cron 觸發器也利用一系列特殊字元:
反斜線(/)字元表示增量值。例如,在秒字段中「5/15」代表從第 5 秒開始,每 15 秒一次。
問號(?)字元和字母 L 字元只有在月內日期和周內日期欄位中可用。問號表示這個欄位不包含具體值。所以,如果指定月內日期,可以在周內日期欄位插入“?”,表示週內日期值無關緊要。字母 L 字元是 last 的縮寫。放在月內日期欄位中,表示安排在當月最後一天執行。在周內日期欄位中,如果“L”單獨存在,就等於“7”,否則代表當月內週內日期的最後一個實例。所以「0L」表示安排在當月的最後一個星期日執行。
在月內日期欄位中的字母(W)字元把執行安排在最靠近指定值的工作日。把「1W」放在月內日期欄位中,表示把執行安排在當月的第一個工作天內。
井號(#)字元為給定月份指定具體的工作日實例。把「MON#2」放在周內日期欄位中,表示把任務安排在當月的第二個星期一。
星號(*)字符是通配字符,表示該字段可以接受任何可能的值。
總結一下
當你需要定時執行一些程式碼的時候,你就可以用到作業調度了,Quartz 就是為這個而生的,而且它和 Spring 結合起來非常方便。讓你程式碼寫的飛快,Quartz 還是前幾天我們專案組一個同事告訴我的,我使用了一下,我就被他折服了。
更多Java中Spring使用Quartz任務調度定時器相關文章請關注PHP中文網!

Java如何緩解平台特定的問題? Java通過JVM和標準庫來實現平台無關性。 1)使用字節碼和JVM抽像操作系統差異;2)標準庫提供跨平台API,如Paths類處理文件路徑,Charset類處理字符編碼;3)實際項目中使用配置文件和多平台測試來優化和調試。

java'splatformentenceenhancesenhancesmicroservicesharchitecture byferingDeploymentFlexible,一致性,可伸縮性和便攜性。 1)DeploymentFlexibilityAllowsibilityAllowsOllowsOllowSorlowsOllowsOllowsOllowSeStorunonAnyPlatformwithajvM.2)penterencyCrossServAccAcrossServAcrossServiCessImplifififiesDeevelopmentandeDe

GraalVM通過三種方式增強了Java的平台獨立性:1.跨語言互操作,允許Java與其他語言無縫互操作;2.獨立的運行時環境,通過GraalVMNativeImage將Java程序編譯成本地可執行文件;3.性能優化,Graal編譯器生成高效的機器碼,提升Java程序的性能和一致性。

效率testjavaapplicationsforplatformcompatibility oftheSesteps:1)setUpautomatedTestingTestingActingAcrossMultPlatFormSusingCitoolSlikeSlikeJenkinSorgithUbactions.2)contuctualtemualtemalualTesteTESTENRETESTINGINREALHARTWARETOLEALHARDOELHARDOLEATOCATCHISSUSESUSEUSENINCIENVIRENTMENTS.3)schictcross.3)schoscross.3)

Java編譯器通過將源代碼轉換為平台無關的字節碼,實現了Java的平台獨立性,使得Java程序可以在任何安裝了JVM的操作系統上運行。

ByteCodeachievesPlatFormIndenceByByByByByByExecutedBoviratualMachine(VM),允許CodetorunonanyplatformwithTheApprepreprepvm.Forexample,Javabytecodecodecodecodecanrunonanydevicewithajvm

Java不能做到100%的平台獨立性,但其平台獨立性通過JVM和字節碼實現,確保代碼在不同平台上運行。具體實現包括:1.編譯成字節碼;2.JVM的解釋執行;3.標準庫的一致性。然而,JVM實現差異、操作系統和硬件差異以及第三方庫的兼容性可能影響其平台獨立性。

Java通過“一次編寫,到處運行”實現平台獨立性,提升代碼可維護性:1.代碼重用性高,減少重複開發;2.維護成本低,只需一處修改;3.團隊協作效率高,方便知識共享。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。