亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何編寫循環定期執行的任務?

如何編寫循環定期執行的任務?

DIEA 2019-04-16 16:58:19
需求是設計一個系統,某一個組件需要定期對數據進行批處理計算,比如每隔2個小時執行一次計算。應該怎么實現呢?在主程序中寫個循環還是設定一個crontab任務由系統間隔性執行程序?
查看完整描述

2 回答

?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

推薦用crontab,感覺死循環常駐內存這種事情怎么看怎么感覺很危險…而且crontab配置簡單,不用寫多余的代碼,專注要做的事情。
                            
查看完整回答
反對 回復 2019-04-16
?
慕尼黑5688855

TA貢獻1848條經驗 獲得超2個贊

晚上考慮了一下。其實并不是說一定要用某種方式,而是要根據實際需求出發來選擇最終的方案。crontab是好,但在某些場合不一定適合;主程序中添加定時任務并不一定都是壞的,有時候還真要這么選擇。
分離or耦合
個人經驗,絕大部分的定時任務都可以從主應用中分離,比如說統計數據計算、過期數據清理、數據備份、日志監控等等。但是前提是定時任務與主業務邏輯關聯不大。如果定時任務和主業務耦合,比如說積分計算,計算規則比較復雜,而且可能隨需求變動,若從主業務代碼分離,那么規則變動的時候就需要改兩份代碼,好一點這部分規則做了封裝,那么改動之后還要記得主業務和定時流程都要重新部署。
如果不用crontab或者類crontab組件,那么也用忙等去做定時任務也是不可取的。可以使用ScheduledExecutorService管理延時任務。
同意@公子的。但是用crontab的時候需要注意執行線程能夠正常退出。之前就發生過因為執行線程沒有退出,資源占滿。
如果任務執行依賴的組件比較多,在主業務中編寫方便的話,也可以考慮使用定時器來作延時任務管理。
                            
查看完整回答
反對 回復 2019-04-16
  • 2 回答
  • 0 關注
  • 356 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號