實例講授java准時義務。本站提示廣大學習愛好者:(實例講授java准時義務)文章只能為提供參考,不一定能成為您想要的結果。以下是實例講授java准時義務正文
明天為年夜家分享的一個經歷就是java的准時義務,就是說在一天的某個時光點履行以下代碼。
public class TimerManager { //時光距離 private static final long PERIOD_DAY = 24 * 60 * 60 * 1000; public TimerManager() { Calendar calendar = Calendar.getInstance(); /*** 定制逐日2:00履行辦法 ***/ calendar.set(Calendar.HOUR_OF_DAY, 2); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); Date date=calendar.getTime(); //第一次履行准時義務的時光 //假如第一次履行准時義務的時光 小於 以後的時光 //此時要在 第一次履行准時義務的時光 加一天,以便此義務鄙人個時光點履行。假如不加一天,義務會立刻履行。 if (date.before(new Date())) { date = this.addDay(date, 1); } Timer timer = new Timer(); NFDFlightDataTimerTask task = new NFDFlightDataTimerTask(); //支配指定的義務在指定的時光開端停止反復的固定延遲履行。 timer.schedule(task,date,PERIOD_DAY); } // 增長或削減天數 public Date addDay(Date date, int num) { Calendar startDT = Calendar.getInstance(); startDT.setTime(date); startDT.add(Calendar.DAY_OF_MONTH, num); return startDT.getTime(); } }
在TimerManager 這個類外面,年夜家必定要留意時光點的成績。假如你設定在清晨2點履行義務。但你是在2點今後宣布的法式或是重啟過辦事,那如許的情形下,義務會立刻履行,而不是比及第二天的清晨2點履行。為了,防止這類情形產生,只能斷定一下,假如宣布或重啟辦事的時光晚於准時履行義務的時光,就在此基本上加一天。
public class NFDFlightDataTimerTask extends TimerTask { private static Logger log = Logger.getLogger(NFDFlightDataTimerTask.class); @Override public void run() { try { //在這裡寫你要履行的內容 } catch (Exception e) { log.info("-------------解析信息產生異常--------------"); } } } public class NFDFlightDataTaskListener implements ServletContextListener { public void contextInitialized(ServletContextEvent event) { new TimerManager(); } public void contextDestroyed(ServletContextEvent event) { } }
然後要在web.xml外面設置裝備擺設監聽器
<listener> <listener-class> com.listener.NFDFlightDataTaskListener </listener-class> </listener>
以上就是本文的全體內容,願望對年夜家的進修有所贊助。