ServletContextListener监听+Thread使用

来源:互联网 发布:419是什么意思网络用语 编辑:程序博客网 时间:2024/05/16 02:08
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秒会输出一次:

 定时执行该线程!

0 0
原创粉丝点击