Java-Quartz vs. Linux-Crontab
這篇介紹Java-Quartz和Linux-Crontab兩者不同以及使用時機。
Java-Quartz
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| //Excample code: package com.nv.quartzjob;
import org.quartz.DisallowConcurrentExecution; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException;
@DisallowConcurrentExecution public class UpdateJob implements Job {
@Override public void execute(final JobExecutionContext ctx) throws JobExecutionException { //do something } } Java-Quartz若加入@DisallowConcurrentExecution annotation設定 執行Job時同時只會有一個Job存在,下一個會等待上一個完成才執行。
|
Linux-Crontab
1 2 3 4 5
| crontab -l //每秒去清log * * * * * sh /home/clearLog.sh 在Linux的crontab是屬於fire at time,當時間一到就馬上執行,不會去判斷上一個crontab還 在不在,屬於ConcurrentExecution。
|
兩者比較&使用時機
1 2 3 4 5 6 7
| 在Java中,可以依照需求,若方法是依照功能區分,該Job可命名為功能Job。 若需依照periodTime,有多個功能要加入period10minsJob內,則可以使用MultiThread 做平行處理,達到一樣的效果。 --- 在Linux-Crontab 則需要注意平行處理所造成非預期的結果,例如每秒校正對時,在網路延遲時有可能對時 會每秒發生錯誤對時,造成系統時間異常。
|