现在要写一个servlet在每天晚上12点的时候启动线程。大家看我写的行不行?
一:监听器:
package com.test;import java.util.Timer;import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;/**
 * Application Lifecycle Listener implementation class ContextListener
 *
 */
public class ContextListener implements ServletContextListener {

private Timer timer = null;    /**
     * Default constructor. 
     */
    public ContextListener() {
        // TODO Auto-generated constructor stub
    } /**
     * @see ServletContextListener#contextDestroyed(ServletContextEvent)
     */
    public void contextDestroyed(ServletContextEvent event) {
     timer.cancel();
     event.getServletContext().log("定时器销毁");
    } /**
     * @see ServletContextListener#contextInitialized(ServletContextEvent)
     */
    public void contextInitialized(ServletContextEvent event) {
     timer = new java.util.Timer(true);
     event.getServletContext().log("定时器已启动");
     timer.schedule(new MyTask(event.getServletContext()), 0, 60*60*1000);
     event.getServletContext().log("已经添加任务调度表");
    }

}
二任务:
package com.test;import java.util.Calendar;
import java.util.TimerTask;import javax.servlet.ServletContext;public class MyTask extends TimerTask { private static final int C_SCHEDULE_HOUR = 15;
private static boolean isRunning = false;
private ServletContext context = null; public MyTask(ServletContext context) {
this.context = context;
} @Override
public void run() {
Calendar cal = Calendar.getInstance();
if (!isRunning) {
if (C_SCHEDULE_HOUR == cal.get(Calendar.HOUR_OF_DAY)) {
isRunning = true;
context.log("开始执行指定任务");
System.out.println("开始执行指定任务");
int i = 0;
while (i++ < 10) {
context.log("已完成任务的" + i + "/" + 10);
System.out.println("已完成任务的" + i + "/" + 10);
}
isRunning = false;
context.log("指定任务执行结束");
System.out.println("指定任务执行结束");
}
} else {
context.log("上一次任务执行还未结束");
}
}}
三:web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>
TestTimer</display-name>
<listener>
<listener-class>com.test.ContextListener</listener-class>
</listener>
<servlet>
<description>
</description>
<display-name>
Test</display-name>
<servlet-name>Test</servlet-name>
<servlet-class>com.test.Test</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>
/Test</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>