java timer 定時任務

  • 監聽類
 1 package com.xx.model;
 2 
 3 import java.util.Calendar;
 4 import java.util.Date;
 5 import java.util.Timer;
 6 import javax.servlet.ServletContextEvent;
 7 import javax.servlet.ServletContextListener;
 8 import org.apache.commons.logging.Log;
 9 import org.apache.commons.logging.LogFactory;
10 import com.xx.model.XXTask;
11 
12 public class XXTimerListener  implements ServletContextListener  {
13     
14     private Timer timer = null;
15     private static final Log log = LogFactory.getLog(XXTimerListener.class);
16     final Log logrecords = LogFactory.getLog("records");
17 
18     public void contextDestroyed(ServletContextEvent arg0) {
19         // TODO Auto-generated method stub
20         
21     }
22     
23     public void contextInitialized(ServletContextEvent arg0) {
24         // TODO Auto-generated method stub
25         
26         try {
27             timer = new Timer(true);
28             try {
29                 Calendar calendar = Calendar.getInstance();
30                 calendar.set(Calendar.HOUR_OF_DAY, 10); // 上午10點
31                 calendar.set(Calendar.MINUTE, 0);
32                 calendar.set(Calendar.SECOND, 0);
33                 Date date = calendar.getTime(); // 第一次執行定時任務的時間
34                                                 // 如果第一次執行定時任務的時間 小于當前的時間
35                                                 // 此時要在 第一次執行定時任務的時間加一天,以便此任務在下個時間點執行。如果不加一天,任務會立即執行。
36                 if (date.before(new Date())) {
37                     date = addDay(date, 1);
38                 }
39                 timer.schedule(new XXTask(),date,24*3600*1000);
40                 log.info("任務創建成功!");
41             } catch (Exception e) {
42                 log.error("任務創建失敗!", e);
43             }
44         } catch (Exception e) {
45             // TODO Auto-generated catch block
46             e.printStackTrace();
47         }
48     }
49     
50     public Date addDay(Date date, int num) {
51         Calendar startDT = Calendar.getInstance();
52         startDT.setTime(date);
53         startDT.add(Calendar.DAY_OF_MONTH, num);
54         return startDT.getTime();
55     }
56 }
  • 任務類
 1 package com.xx.model;
 2 import java.util.TimerTask;
 3 import org.apache.commons.logging.Log;
 4 import org.apache.commons.logging.LogFactory;
 5 /**
 6  * @author qjl
 7  * 
 8  */
 9 public class XXTask extends TimerTask {
10 
11     private static final Log log = LogFactory.getLog(XXTask.class);
12     MeasureCountsAjax mscAjax = new MeasureCountsAjax();
13 
14     @Override
15     public void run() {
16 
17         log.debug("定時任務" + new Date(System.currentTimeMillis()));
18         try {
19             //定時任務要執行的方法寫這里
20         } catch (Exception e) {
21             log.error("定時運行失敗", e);
22         } finally {
23         }
24     }
25 }

?

  • 在web.xml中增加
1   <listener>
2          <listener-class>
3               com.xx.model.XXTimerListener
4          </listener-class>
5     </listener>

?

轉載于:https://www.cnblogs.com/qinjunli/p/4618671.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258664.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258664.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258664.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python 打開txt_在python中從txt文件打開鏈接

我想請求一個rss程序的幫助。我所做的是收集包含我項目相關信息的網站&#xff0c;然后檢查它們是否有rss提要。鏈接存儲在txt文件中(每行一個鏈接)。因此&#xff0c;我有一個txt文件&#xff0c;其中包含了需要檢查rss的基本url。在我找到了這個代碼&#xff0c;這會使我的工…

IOS-awakeFromNib和viewDidLoad

awakeFromNib 當.nib文件被加載的時候&#xff0c;會發送一個awakeFromNib的消息到.nib文件中的每個對象&#xff0c;每個對象都可以定義自己的 awakeFromNib函數來響應這個消息&#xff0c;執行一些必要的操作。也就是說通過nib文件創建view對象是執行awakeFromNib 。 viewDid…

使用過濾統計信息解決基數預估錯誤

基數預估是SQL Server里一顆隱藏的寶石。一般而言&#xff0c;基數預估指的是&#xff0c;在查詢編譯期間&#xff0c;查詢優化器嘗試找出在執行計劃里從各個運算符平均返回的行數。這個估計用來驅動計劃本身生成并選擇正確的計劃運算符——例如像Nested Loop, Merge Join,還是…

faster-rcnn系列學習之準備數據

如下列舉了 將數據集做成VOC2007格式用于Faster-RCNN訓練的相關鏈接。 RCNN系列實驗的PASCAL VOC數據集格式設置 制作VOC2007數據集用于Faster-RCNN訓練 將數據集做成VOC2007格式用于Faster-RCNN訓練 這一篇比較詳細地介紹了如何制造voc2007的所有文件&#xff0c;內含相關軟件…

C# 委托鏈、多路廣播委托

委托鏈、多路廣播委托&#xff1a;也就是把多個委托鏈接在一起,我們把鏈接了多個方法的委托稱為委托鏈或多路廣播委托 例&#xff1a; 1 class HelloWorld2 {3 //定義委托類型4 delegate void DelegationChain();5 static void Main(string[] args)6 …

openssl 生成證書_使用證書和私鑰導出P12格式個人證書!

【OpenSSL】使用證書和私鑰導出P12格式個人證書1, 產生CA證書1.1, 生成ca的私鑰openssl genrsa -out cakey.pem 20481.2, 生成ca的自簽名證書請求openssl req -new -key cakey.pem -subj "/CNExample Root CA" -out cacsr.pem1.3, 自簽名ca的證書openssl x509 -req -…

PHP (20140505)

數據庫表與表之間的連接是用id聯系。 join on&#xff1b;轉載于:https://www.cnblogs.com/sunshine-c/p/3710283.html

py-faster-rcnn代碼roidb.py的解讀

roidb是比較復雜的數據結構&#xff0c;存放了數據集的roi信息。原始的roidb來自數據集&#xff0c;在trian.py的get_training_roidb(imdb)函數進行了水平翻轉擴充數量&#xff0c;然后prepare_roidb(imdb)【定義在roidb.py】為roidb添加了一些說明性的屬性。 在這里暫時記錄下…

python 概率分布_python實現概率分布

伯努利分布from scipy import statsimport numpy as npimport matplotlib.pyplot as pltxnp.arange(0,2,1)xarray([0, 1])# 求對應分布的概率&#xff1a;概率質量函數 (PMF)p0.5# 硬幣朝上的概率dfstats.bernoulli.pmf(x,p)dfarray([0.5, 0.5])#繪圖vlines用于繪制豎直線(vert…

CodeForces 7D Palindrome Degree 字符串hash

題目鏈接&#xff1a;點擊打開鏈接 #include<stdio.h> #include<iostream> #include<string.h> #include<set> #include<vector> #include<map> #include<math.h> #include<queue> #include<string> #include<stdlib…

程序清單8-9 回送所有命令行參數和所有環境字符串

1 /*2 3 Name : test.c4 Author : blank5 Version :6 Copyright : Your copyright notice7 Description : 程序清單8-9 回送所有命令行參數和所有環境字符串8 9 */ 10 11 #include "ourhdr.h" 12 13 int main(int argc, char *argv[]) 14…

SQL快速入門

關系化數據庫保存關系模式數據的容器關系模式是對業務對象實體&#xff0c;屬性以及關系的抽象&#xff0c;提煉需求的名詞是建立實體關系模型常用的方法。要了解E-R實體關系圖的繪制。常用關系數據庫Microsoft SQL Server&#xff1b;微軟公司產品&#xff0c;中等規模數據庫&…

Faster RCNN minibatch.py解讀

minibatch.py 的功能是&#xff1a; Compute minibatch blobs for training a Fast R-CNN network. 與roidb不同的是&#xff0c; minibatch中存儲的并不是完整的整張圖像圖像&#xff0c;而是從圖像經過轉換后得到的四維blob以及從圖像中截取的proposals&#xff0c;以及與之對…

oracle精簡版_使用Entity Framework Core訪問數據庫(Oracle篇)

前言哇。。看看時間 真的很久很久沒寫博客了 將近一年了。最近一直在忙各種家中事務和公司的新框架 終于抽出時間來更新一波了。本篇主要講一下關于Entity Framework Core訪問oracle數據庫的采坑。。強調一下&#xff0c;本篇文章發布之前 關于Entity Framework Core訪問oracl…

interrupt、interrupted 、isInterrupted 區別

interrupt&#xff1a;調用方法&#xff0c;是線程處于中斷狀態&#xff0c;但是這個方法只是讓線程設置為中斷狀態&#xff0c;并不會真正的停止線程。支持線程中斷的方法就是在堅持線程中斷狀態&#xff0c;一旦線程中斷狀態被設置為中斷&#xff0c;就會拋出異常。interrupt…

java String部分源碼解析

String類型的成員變量 /** String的屬性值 */ private final char value[];/** The offset is the first index of the storage that is used. *//**數組被使用的開始位置**/private final int offset;/** The count is the number of characters in the String. *//**String中…

python在材料模擬中的應用_基于Python的ABAQUS二次開發及在板料快速沖壓成形模擬中的應用...

2009doi:1013969/j1issn1100722012120091041013基于Python的ABAQUS二次開發及在板料快速沖壓成形模擬中的應用(北京航空航天大學飛行器制造工程系,北京100191)吳向東劉志剛萬敏王文平黃霖摘要:采用Python腳本語言對ABAQUS的前處理模塊進行二次開發,討論了Python腳本在ABAQUS二次…

Doxygen簡介

&#xff08;轉自&#xff1a;http://www.cnblogs.com/liuliunumberone/archive/2012/04/10/2441391.html&#xff09; 一&#xff0e;什么是Doxygen? Doxygen 是一個程序的文件產生工具&#xff0c;可將程序中的特定批注轉換成為說明文件。通常我們在寫程序時&#xff0c;或多…

javascript之閉包理解以及應用場景

1 function fn(){2 var a 0;3 return function (){4 return a;5 } 6 }如上所示&#xff0c;上面第一個return返回的就是一個閉包&#xff0c;那么本質上說閉包就是一個函數。那么返回這個函數有什么用呢&#xff1f;那是因為這個函數可以調用到它外部的a…

faster rcnn學習之rpn、fast rcnn數據準備說明

在上文《 faster-rcnn系列學習之準備數據》,我們已經介紹了imdb與roidb的一些情況&#xff0c;下面我們準備再繼續說一下rpn階段和fast rcnn階段的數據準備整個處理流程。 由于這兩個階段的數據準備有些重合&#xff0c;所以放在一起說明。 我們并行地從train_rpn與train_fas…