1. 程式人生 > >每月初執行一段程式碼

每月初執行一段程式碼

每個月月初的時候需要執行一段程式碼,在網上看到最好直接用quartz,但覺得還是需要導包,嫌麻煩。和朋友研究了一下最後又這個這種寫法。

import java.util.Date;
import java.util.List;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;

import kkd.common.util.DateUtil;

import com.interiorwages.entity.InteriorWagesChangeInfo;
import com.useradminservice.service.InteriorWagesChangeInfoService;
import
com.useradminservice.service.impl.InteriorWagesChangeInfoServiceImpl; public class timerTaskTest extends TimerTask { ApplicationContextUtil.getApplicationContext(); private static Timer timer = new Timer(); private static Object obj = new Object(); @Override public void run
() { synchronized(obj){ System.out.println(timer); if(timer != null){ timer.cancel(); } System.out.println("timer執行了"); timer = new Timer(); timerTaskTest test = new timerTaskTest(); timer.schedule(test, test.getNextDate()); } } public
long getNextDate(){ //獲取當前時間 Date date = new Date(); //獲取當月最後一天的23:59:59 Date lastDate = DateUtil.getEndDateTimeOfMonth(date); long lDate = date.getTime(); long lLastDate = lastDate.getTime(); //獲取兩個時間相減的毫秒值。 long interval = lLastDate-lDate; System.out.println(interval); //給每次執行的間隔時間+5秒。確保能到下個月。 interval += 5000; System.out.println(interval); return interval; } public static void main(String[] args){ timerTaskTest test = new timerTaskTest(); Date date = new Date(); date = DateUtil.addSeconds(date, 3); timer.schedule(test, date); } }