您的位置:首页 > 其它

ServletContextListener监听+Thread使用

2015-09-18 17:21 381 查看
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秒会输出一次:

定时执行该线程!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: