Javaweb 定時器功能代碼實例
在Java的6.0版本中新增了concurrent包,這個包是用作線程同步的包,提供了很多工具類。
其中定時器就是其中之一。近期在做一個項目,在項目中要實現(xiàn)啟動Web服務(wù)的同時啟動一個任務(wù),要求此任務(wù)為守護(hù)進(jìn)程,定時調(diào)用一些任務(wù)操作代碼。在網(wǎng)上搜索相關(guān)的實現(xiàn),綜合考慮得出一個解決方案。方案是:使用tomcat服務(wù)器的監(jiān)聽器類作守護(hù)進(jìn)程,調(diào)用concurrent包提供的定時器,最后在定時器中調(diào)用操作實現(xiàn)代碼。具體實現(xiàn)類Translator在這里不再給出,將其替換為自己需要的實現(xiàn)類即可。
1.任務(wù)類
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() { //定時任務(wù)邏輯代碼 } }
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);//項目啟動當(dāng)天凌晨3點執(zhí)行1次,如果已經(jīng)超過凌晨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>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
spring boot實現(xiàn)上傳圖片并在頁面上顯示及遇到的問題小結(jié)
最近在使用spring boot搭建網(wǎng)站的過程之中遇到了有點小問題,最終解決方案是在main目錄下新建了一個webapp文件夾,并且對其路徑進(jìn)行了配置,本文重點給大家介紹spring boot實現(xiàn)上傳圖片并在頁面上顯示功能,需要的朋友參考下吧2017-12-12Spring Cloud Eureka 服務(wù)上下線監(jiān)控的實現(xiàn)
這篇文章主要介紹了Spring Cloud Eureka 服務(wù)上下線監(jiān)控的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09Spring Boot 集成 Kafkad的實現(xiàn)示例
這篇文章主要介紹了Spring Boot 集成 Kafkad的示例,幫助大家更好的理解和學(xué)習(xí)使用Spring Boot框架,感興趣的朋友可以了解下2021-04-04Java使用cxf發(fā)布及調(diào)用webservice接口的方法詳解
今天小編就為大家分享一篇關(guān)于Java使用CXF發(fā)布及調(diào)用WebService接口的方法,文中通過代碼示例給大家介紹的非常詳細(xì),具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2023-08-08SpringBoot redis分布式緩存實現(xiàn)過程解析
這篇文章主要介紹了SpringBoot redis分布式緩存實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-10-10