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("定时执行该线程!");
	}
}

####################################################################################################################################

创建一个web项目,以下为web.xml中监听的配置:

  <listener>
  	<listener-class>
  		<!-- 自定义监听类 -->
  		com.lanhuigu.util.TestServletContextListener	
  	</listener-class>
  </listener>

执行自己的监听类,控制台每隔10秒会输出一次:

 定时执行该线程!

你可能感兴趣的:(thread,run)