Timer实现定时任务
生活随笔
收集整理的這篇文章主要介紹了
Timer实现定时任务
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
web.xml配置Listener:
<listener><listener-class>com.prison.controller.TimerManager</listener-class></listener>?
任務類,繼承TimerTask類:
package com.prison.util;import java.util.TimerTask;import com.prison.service.UserService;public class Task extends TimerTask{private UserService userService;public Task(UserService userService){this.userService = userService;}public Task(){super();}@Overridepublic void run() {try {System.out.println("進來啦哈哈哈哈哈哈");} catch (Exception e) {System.out.println("異常了");}}}?
實現JAVA EE的監聽接口,定時調用任務類:
package com.prison.controller;import java.util.Calendar; import java.util.Date; import java.util.Timer;import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.context.support.WebApplicationContextUtils;import com.prison.service.UserService; import com.prison.util.Task;@Controller @RequestMapping(value="/Timer") public class TimerManager implements ServletContextListener{//時間間隔(一天) private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;Timer timer = null;@Overridepublic void contextInitialized(ServletContextEvent sce) {Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 11); //凌晨1點 calendar.set(Calendar.MINUTE, 1); calendar.set(Calendar.SECOND, 0); Date date=calendar.getTime(); //第一次執行定時任務的時間 //如果第一次執行定時任務的時間 小于當前的時間 //此時要在 第一次執行定時任務的時間加一天,以便此任務在下個時間點執行。如果不加一天,任務會立即執行。 if (date.before(new Date())) { date = this.addDay(date, 1); }UserService userService = WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext()).getBean(UserService.class);timer = new Timer(true);timer.schedule(new Task(userService), date, PERIOD_DAY);}@Overridepublic void contextDestroyed(ServletContextEvent arg0) {// TODO Auto-generated method stub}// 增加或減少天數 public Date addDay(Date date, int num) { Calendar startDT = Calendar.getInstance(); startDT.setTime(date); startDT.add(Calendar.DAY_OF_MONTH, num); return startDT.getTime(); }}?
總結
以上是生活随笔為你收集整理的Timer实现定时任务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用JQeury屏蔽网页广告(针对手机端
- 下一篇: Android自定义TextView排版