【发布时间】:2012-07-18 11:38:26
【问题描述】:
我需要创建一个线程来监听新文件、修改文件或删除文件的文件路径。我正在使用一个使用 Spring 3、Struts 2 和 Hibernate 3 的 Web 应用程序。如果我运行该项目,它会加载包含文本“Hello World”的 index.jsp。
问题在于,当我创建一个 java Thread() 来监听文件路径并将其分配给 index.jsp 时:
<action name="" method="runThread" class="TestThreadBean">
<result>index.jsp</result>
</action>
然后“Hello World”文本永远不会出现,因为线程永远不会停止(这是正确的,它不应该停止)。我需要这个线程在后台运行,并且不干扰 Web 应用程序的其余部分。我不想只为这个线程创建一个单独的 Web 应用程序。另外,我不希望每次创建new Session 实例时都创建一个new Thread 实例,无论有多少 Session 实例处于活动状态,都应该只有一个 Thread 实例。
【问题讨论】:
-
您实际上不需要做任何特别的事情来在 Tomcat 中运行线程。您可以像往常一样使用
new Thread或Executor创建它们。这不符合 J2EE 规范,但事实是它可以工作。以符合规范的方式执行此操作并不简单,尤其是在实现 servlet 规范但不实现 J2EE 其余部分的容器中。 -
您所说的“客户端”到底是什么意思?
-
你需要一个调度机制来解决这个问题,尝试使用
Quartz和SimpleTrigger。
标签: java multithreading tomcat