ServletContextListener监听+Thread使用 package com.lanhuigu.util; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; /** * Servlet容器启动或终止Web应用时,会触发ServletContextEvent事件, * 该事件由ServletContextListener处理。在ServletContextListener接口中定义了处理ServletContextEvent事件的两个方法。 * 1.contextInitialized(ServletContextEvent sce) * 当servlet启动调用web应用时,调用该方法 * @author Administrator * */ public class TestServletContextListener implements ServletContextListener{ private static ScheduledExecutorService executorService = null; /** * 服务启动时,调用此方法 * 用途:服务启动时加载数据或执行某些特定的方法 */ @Override public void contextInitialized(ServletContextEvent sce) { //创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行 executorService = Executors.newScheduledThreadPool(1); /* * scheduleAtFixedRate方法参数对应的含义: * (执行线程,服务启动后延时,间隔多长时间再次执行,间隔时间单位) *我测试设置的时间为服务启动后,每隔十秒执行一次线程 */ executorService.scheduleAtFixedRate(new TestThread(), 10, 10, TimeUnit.SECONDS); } /** * 当服务终止时,调用此方法 */ @Override public void contextDestroyed(ServletContextEvent sce) { System.out.println("服务停止"); } } //创建一个线程类 class TestThread extends Thread{ //线程方法 public void run(){ System.out.println("定时执行该线程!"); } }