Javaweb 定時器功能代碼實例
在Java的6.0版本中新增了concurrent包,這個包是用作線程同步的包,提供了很多工具類。
其中定時器就是其中之一。近期在做一個項目,在項目中要實現啟動Web服務的同時啟動一個任務,要求此任務為守護進程,定時調用一些任務操作代碼。在網上搜索相關的實現,綜合考慮得出一個解決方案。方案是:使用tomcat服務器的監(jiān)聽器類作守護進程,調用concurrent包提供的定時器,最后在定時器中調用操作實現代碼。具體實現類Translator在這里不再給出,將其替換為自己需要的實現類即可。
1.任務類
import java.util.TimerTask; import javax.servlet.ServletContext; public class MyTask extends TimerTask{ private ServletContext context = null; public CleanTpIpTask(ServletContext servletContext) { this.context = servletContext; } @Override public void run() { //定時任務邏輯代碼 } }
2.監(jiān)聽類
import java.util.Calendar; import java.util.Date; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class MyTaskListener implements ServletContextListener { private java.util.Timer timer = null; MyTask myTask = null; public void contextDestroyed(ServletContextEvent arg0) { timer.cancel(); } public void contextInitialized(ServletContextEvent arg0) { Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int day = c.get(Calendar.DAY_OF_MONTH); c.set(year, month, day, 3, 0, 0);//項目啟動當天凌晨3點執(zhí)行1次,如果已經超過凌晨3點,立刻執(zhí)行 Date date = c.getTime(); timer = new java.util.Timer(true); int period = 24 * 60 * 60 * 1000;//執(zhí)行間隔 if(myTask==null){ myTask = new MyTask(arg0.getServletContext()); timer.schedule(new MyTask(arg0.getServletContext()), date, period); //timer.schedule(new CleanTpIpTask(arg0.getServletContext()), date);//只執(zhí)行1次 //timer.schedule(new CleanTpIpTask(arg0.getServletContext()), 0, period);//項目啟動立刻執(zhí)行,每隔period 毫秒執(zhí)行1次 } } }
3.在web.xml中配置
<listener> <listener-class>webservice.MyTaskListener</listener-class> </listener>
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
spring boot實現上傳圖片并在頁面上顯示及遇到的問題小結
最近在使用spring boot搭建網站的過程之中遇到了有點小問題,最終解決方案是在main目錄下新建了一個webapp文件夾,并且對其路徑進行了配置,本文重點給大家介紹spring boot實現上傳圖片并在頁面上顯示功能,需要的朋友參考下吧2017-12-12Spring Cloud Eureka 服務上下線監(jiān)控的實現
這篇文章主要介紹了Spring Cloud Eureka 服務上下線監(jiān)控的實現,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09Java使用cxf發(fā)布及調用webservice接口的方法詳解
今天小編就為大家分享一篇關于Java使用CXF發(fā)布及調用WebService接口的方法,文中通過代碼示例給大家介紹的非常詳細,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2023-08-08