java定時器 Timer

java定時器 Timer

java定時器的使用(Timer)
1、在應用開發中,經常需要一些週期性的操作,比如每5分鐘執行某一操作等。對於這樣的操作最方便、高效的實現方式就是使用

java.util.Timer工具類。

private java.util.Timer timer;
timer = new Timer(true);
timer.schedule(
new java.util.TimerTask() { public void run() { //server.checkNewMail(); 要操作的方法 } }, 0, 5*60*1000);
      第一個參數是要操作的方法,第二個參數是要設定延遲的時間,第三個參數是週期的設定,每隔多長時間執行該操作。

    使用這幾行代碼之後,Timer本身會每隔5分鐘調用一遍server.checkNewMail()方法,不需要自己啓動線程。Timer本身也是多

線程同步的,多個線程可以共用一個Timer,不需要外部的同步代碼。
2、
(1)Timer.schedule(TimerTask task,Date time)安排在制定的時間執行指定的任務。
(2)Timer.schedule(TimerTask task,Date firstTime ,long period)安排指定的任務在指定的時間開始進行重複的固定延遲執行.
(3)Timer.schedule(TimerTask task,long delay)安排在指定延遲後執行指定的任務.
(4)Timer.schedule(TimerTask task,long delay,long period)安排指定的任務從指定的延遲後開始進行重複的固定延遲執行.
(5)Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period)安排指定的任務在指定的時間開始進行重複的固定

速率執行.
(6)Timer.scheduleAtFixedRate(TimerTask task,long delay,long period)安排指定的任務在指定的延遲後開始進行重複的固定速

率執行. 

 

 

14 指定應用事件監聽程序

應用事件監聽器程序是建立或修改servlet環境或會話對象時通知的類。它們是servlet規範的版本2.3中的新內容。這裏只簡單地說明用來向Web應用註冊一個監聽程序的web.xml的用法。
註冊一個監聽程序涉及在web.xml的web-app元素內放置一個listener元素。在listener元素內,listener-class元素列出監聽程序的完整的限定類名,如下所示:
<listener>
<listener-class>package.ListenerClass</listener-class>
</listener>
雖然listener元素的結構很簡單,但請不要忘記,必須正確地給出web-app元素內的子元素的次序。listener元素位於所有的servlet 元素之前以及所有filter-mapping元素之後。此外,因爲應用生存期監聽程序是serlvet規範的2.3版本中的新內容,所以必須使用 web.xml DTD的2.3版本,而不是2.2版本。
例如,程序清單5-20給出一個名爲ContextReporter的簡單的監聽程序,只要Web應用的Servlet-Context建立(如裝載Web應用)或消除(如服務器關閉)時,它就在標準輸出上顯示一條消息。程序清單5-21給出此監聽程序註冊所需要的web.xml文件的一部分。

程序清單5-20 ContextReporterjava
package moreservlets;

import javax.servlet.*;
import java.util.*;

/** Simple listener that prints a report on the standard output
* when the ServletContext is created or destroyed.
* <P>
* Taken from More Servlets and JavaServer Pages
* from Prentice Hall and Sun Microsystems Press,
*
http://www.moreservlets.com/.
* © 2002 Marty Hall; may be freely used or adapted.
*/

public class ContextReporter implements ServletContextListener {
public void contextInitialized(ServletContextEvent event) {
System.out.println("Context created on " +
new Date() + ".");
}

public void contextDestroyed(ServletContextEvent event) {
System.out.println("Context destroyed on " +
new Date() + ".");
}
}


程序清單5-21 web.xml(聲明一個監聽程序的摘錄)
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"
http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
<!-- ... -->
<filter-mapping> … </filter-mapping>
<listener>
<listener-class>package.ListenerClass</listener-class>
</listener>
<servlet> ... </servlet>
<!-- ... -->
</web-app>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章