欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Servlet 后台线程启动,servlet后台线程

来源: javaer 分享于  点击 44706 次 点评:232

Servlet 后台线程启动,servlet后台线程


刚开始学java,做javaweb开发,想在后台服务开启时候后台跑一个线程做些清理工作,到网上看了几篇博客,自己整了整,写出点东西来。现在用博客记录下来。

java开发新手,欢迎吐槽。


以下demo写的是在服务启动的时候,给servletContext中的一个list集合添加数据。当然,这个集合不是线程安全的,只是简单的demo。


代码如下:


package com.test.servlet;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class StartThreadListener implements ServletContextListener {

	private MyThread myThread = null;
	
	@Override
	public void contextDestroyed(ServletContextEvent arg0) {
		System.out.println("end-----------");
		if (myThread != null && myThread.isInterrupted()) {  
            myThread.interrupt(); 
        } 
		
	}

	@Override
	public void contextInitialized(ServletContextEvent event) {
		ServletContext context = event.getServletContext();
		List<String> list = new ArrayList<String>();
		context.setAttribute("token", list);

		System.out.println("start-----------");
        if (myThread == null) {  
            myThread = new MyThread(context);  
        }
        myThread.start(); // servlet 上下文初始化时启动  
		
	}

}

//自定义线程
class MyThread extends Thread{

	private ServletContext context = null;
	
	public MyThread(ServletContext context) {
		super();
		this.context = context;
	}


	@Override
	public void run() {
		while (!this.isInterrupted()) {// 线程未中断执行循环  
            try {  
            	@SuppressWarnings("unchecked")
				List<String> list = (List<String>) this.context.getAttribute("token");
            	list.add("abcd");
            	System.out.println(list);
            	System.out.println("list size = "+list.size());
                Thread.sleep(4000); //每隔2000ms执行一次  
            } catch (InterruptedException e) {  
                e.printStackTrace();  
            }
        }  
	}
	
}


然后再web.xml中配置如下:

<listener>  
    <listener-class>com.test.servlet.StartThreadListener</listener-class>  
</listener>




相关文章

    暂无相关文章
相关栏目:

用户点评