免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3421 | 回复: 3
打印 上一主题 下一主题

请教一个在tomcat系统中启动线程的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-04-19 16:55 |只看该作者 |倒序浏览
我需要在tomcat的系统中启动一个长时间运行的维护线程。

我希望这个线程在系统一启动的时候自动启动。
无论tomcat重启还是reload该线程都应该只有一个实例。

我在这个线程中向catalina.out中输出系统时间,这个就可以知道有几个线程在运行了。

我是在系统启动的时候加载一个servlet在这个servlet中启动一个静态线程。
但是问题是tomcat reload后这个线程就有两个了,每次reload都会加一个线程。
这让我很奇怪!!!

请教各位大大,有应该怎么启动一个我需要的线程?

最好不要修改tomcat的源代码。

论坛徽章:
0
2 [报告]
发表于 2004-04-20 12:52 |只看该作者

请教一个在tomcat系统中启动线程的问题

"应该只有一个实例",是否应该用 singleton?

另外,你有没有用 Servlet 的 destroy() method ?

论坛徽章:
0
3 [报告]
发表于 2004-04-20 22:30 |只看该作者

请教一个在tomcat系统中启动线程的问题

问题已经解决,多谢dennis2 的帮忙。
下面贴出实现的代码,看看实现得好不好。

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class InitServlet extends HttpServlet implements SingleThreadModel {
  private static Thread threadOut = null;

  //Initialize global variables
  public void init() throws ServletException {
    if (threadOut == null)
    {
      threadOut = new Thread(new TestOut());
      threadOut.setDaemon(true);
      threadOut.start();
      TestOut.isRunning = true;
    }
  }

  //Process the HTTP Post request
  public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //......
  }

  //Process the HTTP Post request
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //......
  }

  //Clean up resources
  public void destroy() {
    TestOut.isRunning = false;
  }
}

class TestOut implements Runnable
{
  public static boolean isRunning = false;
  public void run()
  {
    while(true)
    {
      System.out.println("" + System.currentTimeMillis());
      try {
        Thread.sleep(1000 * 5);
      }
      catch (InterruptedException ex) {
        ex.printStackTrace();
      }
      if (!isRunning)
      {
        break;
      }
    }
  }
}

论坛徽章:
3
金牛座
日期:2013-10-12 15:42:452015年辞旧岁徽章
日期:2015-03-03 16:54:15IT运维版块每日发帖之星
日期:2016-06-01 06:20:00
4 [报告]
发表于 2008-03-24 10:29 |只看该作者
tomcat自身会产生多少个线程来处理同一个servlet实例呢?
对于并发的很多请求,tomcat不会就一个线程来处理吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP