Java中定時任務使用的最多的我想就是quartz了,可是這個框架太過龐大,並且我也不須要用到這麼多東西,使用方法也是比較複雜(官方Demo我實在是無語……)。因而我便尋找新的框架代替(不要問我爲啥不本身寫……)。用過Linux的crontab的人都知道,使用其定時的表達式能夠很是靈活的定義定時任務的時間以及頻率(Linux的crontab精確到分,而quaeta的精確到秒,不過對我來講精確到分已經夠用了,精確到秒的可使用Timer能夠搞定),而後就是crontab的那個迷人的配置文件,能夠把定時任務很清晰的羅列出來,這個我也是比較喜歡的。(記得當時Spring整合quartz的時候那XML看的我眼都花了……)。因而我便找到了一個輕量調度框架——cron4jhtml
爲了隱藏這個框架裏面的東西,我對其作了封裝,所謂封裝,就是把任務調度放在一個配置文件裏,而後啓動便可(與Linux的crontab很是像)。git
對於Maven項目,首先在src/main/resources/config
下放入cron4j.setting文件(默認是這個路徑的這個文件),而後在文件中放入定時規則,規則以下:github
#我是註釋 [com.company.aaa.job] TestJob = */10 * * * * TestJob2 = */10 * * * *
中括號裏面表示包名,第二行等號前面是要執行的定時任務類名,等號後面是定時表達式。框架
關於定時任務表達式,它與Linux的crontab表達式如出一轍,具體請看這裏: http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html.net
中括號如下都是使用這個包的,直到遇到下一個包名,以上配置等同於:code
com.company.aaa.job.TestJob = */10 * * * * com.company.aaa.job.TestJob2 = */10 * * * *
TestJob是一個實現了Runnable接口的類,在start()方法裏就能夠加邏輯代碼了。htm
調用CronUtil.start()既可啓動定時任務服務,CrontabUtil.stop()關閉服務。blog
固然,若是你想動態的添加定時任務,使用CronUtil.schedule(String schedulingPattern, Runnable task)方法便可(使用此方法加入的定時任務不會被寫入到配置文件)。接口