1. 程式人生 > >Java—實現每天定時執行任務

Java—實現每天定時執行任務

1、定義TimerManager類

import java.util.Calendar;  
import java.util.Date;  
import java.util.Timer;  

/** 
 * java定時任務,每天定時執行任務 
 * @author Lee
 */  
public class TimerManager {  
    //時間間隔  
     private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;  
     public TimerManager() {  
          Calendar calendar = Calendar.getInstance();   

          /*** 定製每日2:00執行方法 ***/
calendar.set(Calendar.HOUR_OF_DAY, 16); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); Date date=calendar.getTime(); //第一次執行定時任務的時間 System.out.println(date); System.out.println("before 方法比較:"+date.before(new Date())); //如果第一次執行定時任務的時間 小於 當前的時間
//此時要在 第一次執行定時任務的時間 加一天,以便此任務在下個時間點執行。如果不加一天,任務會立即執行。迴圈執行的週期則以當前時間為準 if (date.before(new Date())) { date = this.addDay(date, 1); System.out.println(date); } Timer timer = new Timer(); LyzTimerTask task = new LyzTimerTask(); //安排指定的任務在指定的時間開始進行重複的固定延遲執行。
timer.schedule(task,date,PERIOD_DAY); } // 增加或減少天數 public Date addDay(Date date, int num) { Calendar startDT = Calendar.getInstance(); startDT.setTime(date); startDT.add(Calendar.DAY_OF_MONTH, num); return startDT.getTime(); } }

2、重寫TmerTask的run()方法

import java.text.SimpleDateFormat;  
import java.util.Calendar;  
import java.util.TimerTask;  

/** 
 * 在 TimerManager 這個類裡面,大家一定要注意 時間點的問題。如果你設定在凌晨2點執行任務。但你是在2點以後 
 *釋出的程式或是重啟過服務,那這樣的情況下,任務會立即執行,而不是等到第二天的凌晨2點執行。為了,避免這種情況 
 *發生,只能判斷一下,如果釋出或重啟服務的時間晚於定時執行任務的時間,就在此基礎上加一天。 
 * @author Lee 
 */  
public class LyzTimerTask extends TimerTask {  
    private static SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
    @Override  
    public void run() {  
        try {  
             //在這裡寫你要執行的內容  
            System.out.println("執行當前時間"+formatter.format(Calendar.getInstance().getTime()));  
        } catch (Exception e) {  
            System.out.println("-------------解析資訊發生異常--------------");  
        }  
    }  

}  

3、定義自己的監聽器Listener

import javax.servlet.ServletContextEvent;  
import javax.servlet.ServletContextListener;  


public class LeeListener implements  ServletContextListener {  

    public void contextInitialized(ServletContextEvent sce) {  
         new TimerManager();  
    }  

    public void contextDestroyed(ServletContextEvent sce) {  
        // TODO Auto-generated method stub  

    }  

}  

4、配置LeeListener檔案

<!--LeeListener 監聽器-->  
<listener>  
    <listener-class>com.lee.util.LeeListener</listener-class>  
</listener>  

相關推薦

Java實現每天定時執行任務

1、定義TimerManager類 import java.util.Calendar; import java.util.Date; import java.util.Timer; /** * java定時任務,每天定時執行任務 * @

Java實現每天定時執行任務

init 開始 java實現 int 周期 cal ner 你是 nth 1、TimerManager類 package com.lyz.util; import java.util.Calendar; import java.util.Date; import jav

使用AlarmManager實現Android應用每天定時執行任務

介紹 android官方文件:AlarmManager 在Android平臺,除了使用AlarmManger外,還可以使用Timer或者Handler來實現定時任務,但這兩種方式定時並不會太準確;因此如果我們需要實現精準定時任務,使用AlarmManger更

android使用AlarmManager實現應用每天定時執行任務

簡介: 關於service 大家應都知道是Android 四大元件之一,用來執行後臺任務的。 Android 中的定時任務一般有兩種實現方式,一種是使用Java API 裡提供的Timer 類,一種是使用Android 的Alarm 機制。 那麼首先我們來

基於MVC 的Quartz.Net組件實現定時執行任務調度

創建 .get 關系 成了 star +++ rep 清除 pub 新建mvc項目之後,首先引用Quartz組件。工具-->NuGet包管理器-->管理解決方案的 NuGet包管理器 組件安裝完成。 Quartz.Net一個最簡單任務至少包括三部分實現:

Java實現每天定時對資料庫操作

  現在有一個很棘手的問題:客戶要求實現一個功能,就是每日凌晨自動計算慢性病訂單是否有需要在今日提醒的,如果有則生成一條提醒記錄到lm_notice之中。 如何在Web工程中實現任務計劃排程,好多朋友用過Windows的任務計劃。經過查閱較多相關資料,發現Java定時

JAVA WEB專案定時執行任務

1.建立類實現介面 ServletContextListener 2.實現方法contextInitialized(初始化)和contextDestroyed(銷燬) package com.baos

Java定時任務:利用java Timer類實現定時執行任務的功能

lpad 虛擬 觀察 exce 就是 set ring 構造 trac 一、概述 在java中實現定時執行任務的功能,主要用到兩個類,Timer和TimerTask類。其中Timer是用來在一個後臺線程按指定的計劃來執行指定的任務。 TimerTask一個抽象類,它的子類代

java定時執行任務

views sch start bsp tails pri ted java file 現在項目中用到需要定時去檢查文件是否更新的功能。timer正好用於此處。 用法很簡單,new一個timer,然後寫一個timertask的子類即可。 代碼如下: [java] vie

javaWeb監聽器結合定時實現定時執行任務

java監聽器 通過監聽器可以自動的激發一些操作,比如監聽線上人數; 監聽器介面有: ServletContextListener——監聽ServletContext物件; HttpSessionL

ThinkPHP實現定時執行任務的兩種方法

    $this->show('<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} body{ background: #fff; font-family: "微軟雅黑"; color: #

Java進階(十四)實現每天定時對資料庫的操作

Java實現每天定時對資料庫操作 現在有一個很棘手的問題:客戶要求實現一個功能,就是每日凌晨自動計算慢性病訂單是否有需要在今日提醒的,如果有則生成一條提醒記錄到lm_notice之中。 如何在We

Mysql定時執行任務實現方法

在開發過程中經常會遇到這樣一個問題: 每天必須定時去執行一條sql語句 或更新或刪除或執行特定的sql語句。 mysql的客戶端工具Navicat for MySQL提供了計劃任務的形式,可以很好地實現該功能,而且也確實可行,比如像定時備份就做的很好。 然而當在執行

使用ASP.NET實現Windows Service定時執行任務

我們怎樣才能在伺服器上使用asp.NET定時執行任務而不需要安裝windows service?我們經常需要執行一些維護性的任務或者像傳送提醒郵件給使用者這樣的定時任務。這些僅僅通過使用Windows Service就可以完成。Asp.Net通常是一個無狀態的提供

Java併發學習四】如何實現一個定時執行緒池

所謂 “定時任務執行緒池” 就是指放入執行緒池的任務,可以按照指定的等待週期迴圈執行。 Java裡面ScheduledThreadPoolExecutor這個類實現了這種功能。Spring裡面的定時任務也是在ScheduledThreadPoolExecu

Java中關於定時自動任務實現

先說明一下,Java有自帶的定時任務類Timer和TimerTask,可以實現簡單的定時任務,但是對於複雜的任務處理支援的不是很好。這裡就不做說明了,直接上今天所使用的第三方的定時自動任務的框架quartz,jar的版本是2.0.2; 注:如果是不需要動態設定時間的,可以直

使用tornado實現定時執行任務

使用tornado實現輪詢:from tornado import web, ioloop import datetime class MainHandler(web.RequestHandler): def get(self): self.wri

quartz java實現定時任務框架

概述瞭解Quartz體系結構Quartz對任務排程的領域問題進行了高度的抽象,提出了排程器、任務和觸發器這3個核心的概念,並在org.quartz通過介面和類對重要的這些核心概念進行描述:●Job:是一個介面,只有一個方法void execute(JobExecution

利用gevent實現異步執行任務

實現python 異步執行import gevent def task(pid): gevent.sleep(2) print ("task %s done"%pid) def asynchronous(): threads = [gevent.spawn(tas

crontab 定時執行任務

usr pac 啊啊啊 oca CA 日期 and 基本 ron 今天腦殘了,公司有個任務要每小時執行一次,然後我就 /1 * commond結果被老大啪啪打臉了,emmmm前面的分鐘寫的星號,肯定是每分鐘啊啊啊啊啊啊啊啊啊啊,所以再來學習一遍這個命令。 基本