我正在使用websphere服务器。我有一个充当请求处理器的servlet。由于请求是(很多)后台处理,我只需要创建一个线程来完成所有这些后台任务。同时,我的请求处理器应该在启动该线程后返回。从查看日志中找到的内容只要我的请求处理器返回,后台处理线程似乎也会退出,因为它没有给出任何日志消息。我试图让后台线程成为一个守护进程,但它又不会留下任何日志消息。由websphere启动的请求处理器线程是否永远保持在线程池中?在这种情况下,我的后台线程不应该继续工作吗?即使请求处理器死了,是不是因为后台线程是守护线程,它应该继续执行? 请说明。如果我对websphere管理其线程的理解有任何缺陷。请帮我理解它。保持子线程运行
编辑:问题已经solved.Actually这是我bad.I在忍住HttpServletRequest对象与背景thread.But无论如何一旦请求从servlet返回它被销毁工作。所以在我的后台线程中出现了一些空指针异常,并且它正在退出。我仍然必须弄清楚HttpServletRequest对象的生命周期,以及它究竟是什么时候被销毁的。如果你能帮助我理解这一点,我会很感激。 无论如何,谢谢!
编辑:添加什么Servlets specification必须对这个说: 每个请求对象是有效的只有一个servlet的服务方法,或 的过滤器的doFilter方法的范围之内的范围内,除非异步处理 对组件启用,并且对请求 对象调用startAsync方法。在异步处理发生的情况下,在AsyncContext上调用完成之前,请求对象仍然有效,为 。容器通常会回收 请求对象,以避免创建请求对象 的性能开销。 显影剂必须意识到,维持引用请求对象 为其startAsync没有被调用外部上述范围是不 推荐,因为它可以具有不确定的结果。
你在调用`Thread.start()`吗?你有没有尝试过使用JVisualVM来观察你的线程状态? – 2011-01-27 04:27:51