欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Javaweb 定時器功能代碼實例

 更新時間:2020年04月17日 15:16:07   作者:_DC  
這篇文章主要介紹了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>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • java 發(fā)送郵件的實例代碼(可移植)

    java 發(fā)送郵件的實例代碼(可移植)

    java 發(fā)送郵件的實例代碼(可移植),需要的朋友可以參考一下
    2013-03-03
  • 在IDEA啟動多個Spring Boot工程實例

    在IDEA啟動多個Spring Boot工程實例

    這篇文章主要介紹了在IDEA啟動多個Spring Boot工程實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • Java容器源碼LinkedList原理解析

    Java容器源碼LinkedList原理解析

    這篇文章主要介紹了Java容器源碼LinkedList原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • spring boot實現上傳圖片并在頁面上顯示及遇到的問題小結

    spring boot實現上傳圖片并在頁面上顯示及遇到的問題小結

    最近在使用spring boot搭建網站的過程之中遇到了有點小問題,最終解決方案是在main目錄下新建了一個webapp文件夾,并且對其路徑進行了配置,本文重點給大家介紹spring boot實現上傳圖片并在頁面上顯示功能,需要的朋友參考下吧
    2017-12-12
  • Spring Cloud Eureka 服務上下線監(jiān)控的實現

    Spring Cloud Eureka 服務上下線監(jiān)控的實現

    這篇文章主要介紹了Spring Cloud Eureka 服務上下線監(jiān)控的實現,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • Spring Boot 集成 Kafkad的實現示例

    Spring Boot 集成 Kafkad的實現示例

    這篇文章主要介紹了Spring Boot 集成 Kafkad的示例,幫助大家更好的理解和學習使用Spring Boot框架,感興趣的朋友可以了解下
    2021-04-04
  • 關于@Value取值為NULL的解決方案

    關于@Value取值為NULL的解決方案

    這篇文章主要介紹了關于@Value取值為NULL的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Java使用cxf發(fā)布及調用webservice接口的方法詳解

    Java使用cxf發(fā)布及調用webservice接口的方法詳解

    今天小編就為大家分享一篇關于Java使用CXF發(fā)布及調用WebService接口的方法,文中通過代碼示例給大家介紹的非常詳細,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2023-08-08
  • Java設計模式之裝飾者模式詳解和代碼實例

    Java設計模式之裝飾者模式詳解和代碼實例

    這篇文章主要介紹了Java設計模式之裝飾者模式詳解和代碼實例,Decorator模式(別名Wrapper):動態(tài)將職責附加到對象上,若要擴展功能,裝飾者提供了比繼承更具彈性的代替方案,需要的朋友可以參考下
    2014-09-09
  • SpringBoot redis分布式緩存實現過程解析

    SpringBoot redis分布式緩存實現過程解析

    這篇文章主要介紹了SpringBoot redis分布式緩存實現過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10

最新評論