java – Tomcat:当HTTP连接关闭时,终止在请求线程内生成的线程

在Tomcat 6/7中:

1)在请求线程中说我们执行一些任务;调用其他Web服务,DB..etc.当客户端关闭HTTP连接时,请求线程是否被终止/终止停止任何正在运行的任务?如果没有,如何终止?

2)如果在请求线程中我们执行一些并行任务产生一些新线程(使用具有固定池大小的ExecutorService).在HTTP连接关闭的情况下,如何终止/终止在请求线程内生成的这些线程?

解决方法:

a.)线程继续运行.当/它最终返回soemthing时,它将因套接字异常而失败,因为它尝试写入的连接已经关闭.在普通的servlet api中,当连接关闭时,你无法告诉线程.

b.)如果你产生额外的线程,一个简单的观察方法是使用java并发包中的Callables和Futures.这为您提供了一种处理超时的便捷方式.查看此处的文档:

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Future.html

和这里:

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Callable.html

无论如何,你将负责观察线程,并确保它们不会永远运行,你的servlet容器不会为你做这件事.

上一篇:java – 如何使这个非阻塞服务器多线程?


下一篇:谈一谈linux下线程池