[英]Use Thread.sleep(), Timer or platform cron job for a periodic operation in Java EE application
我有一個Java EE應用程序,每十五分鍾從互聯網上下載股票價格。 從計時精度的角度來看,最好是應用程序內化這個周期性操作,即將Thread.sleep()
與計數器結合使用或設置計時器或者通過URL公開任務並擁有平台cron會更好作業定期點擊URL(按照要求的頻率)。
這兩種方法的優點和缺點是什么?
我看到針對OpenJDK實現報告的計時器錯誤讓我感到震驚。 該錯誤表明,系統時間的變化會影響與時間相關的操作和方法(如睡眠和計時器周期性)的操作。
不推薦使用Timer
,但現在存在更好的替代方法: SheduledExecutorService
。 使其更好的一個原因是它使用相對時間而不是絕對時間進行調度。
恕我直言,使用外部cron腳本或內部計時器只是一個問題或偏好。 內部計時器更容易設置,但如果您已經安裝了其他計算機,則可能需要使用另一個計時器,並將此職責放在一個位置。
Thread.sleep
不是定期執行代碼的推薦方法。 這是不准確的,通常是糟糕設計的標志。 我建議你使用Timer類來定期安排代碼的執行。
絕對考慮使用為任務構建的調度作業。 嘗試從任何時序考慮中分離任務本身。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.