tomcat背景线程

时间:2009-07-28 14:04:22

标签: java tomcat tomcat6 background-process

我运行了一个tomcat 6.20实例,并希望通过后台线程发送电子邮件,以防止电子邮件发送功能阻止请求。

有什么方法可以在后台执行线程,同时仍然允许正常的页面流动。

该应用程序是用ICEfaces编写的。

感谢。

3 个答案:

答案 0 :(得分:3)

  1. 使用控制器/ servlet的初始化方法中的Executor(或其他工厂方法之一)创建java.util.concurrent.Executors.newCachedThreadPool
  2. 当请求进入时,将邮件发送逻辑包装在java.lang.Runnable
  3. Runnable提交至Executor
  4. 这将在后台执行发送。记得在启动时创建一个Executor,并在所有请求中共享;不要每次都创建一个新的Executor(你可以,但它会有点慢和浪费)。

答案 1 :(得分:0)

发送电子邮件代替 element = [1,7,7,7,7,9,9,1,0] i = 1 counter = 1 max_frag =0 while element[i] != 0: i+=1 if element[i]== element[i-1]: counter+=1 else: max_frag = max(max_frag,counter) counter = 1 print max_frag 。将您的输出放在Thread.sleep()

的位置
sendRedirect()

答案 2 :(得分:-1)

我找到了出路。这些标签

@PostConstruct()

@PreDestroy()

在servlet中创建两个返回void且不接受任何参数的方法。 将第一个标记放在第一个方法的正上方,将第二个标记放在第二个标记的上方。

标签的Essense

在实现类开始响应Web服务客户端之前,容器会调用@PostConstruct方法。

在从操作中删除端点之前,容器会调用@PreDestroy方法。

PostConstruction()方法中的

使用runnable接口创建你的线程,并让它在无限循环中运行,除非某个布尔变量的值为false。

使用PreDestroy()方法将布尔变量设置为false。