由于许多原因,在servlet中使用线程并不是一种好的做法。
java.util.Timer
看起来像是一个线程的包装器。那么,使用它也不安全吗?如果是这样,那么在servlet中调度任务的最安全方法是什么?
发布于 2009-12-25 12:32:28
是的,您可以使用计时器。
需要记住的一件重要的事情是在停止时取消定时器。如果您忘记取消计时器,您的and应用程序将遭受内存泄漏(类加载器泄漏,因为计时器的线程通过其ContextClassLoader绑定到WebappClassLoader ),并且不能多次部署。
发布于 2009-12-25 12:31:27
是。绝对安全。servlet容器将照看HTTP请求的线程,但是您可以自己生成额外的线程,而不管它们的生命周期是限制在请求的生命周期还是更长时间。
一种常见的模式是产生一个长时间运行的处理线程。Servlet请求将工作项放在队列中(用于带外处理),长时间运行的处理线程将处理这些工作项。
Here's an article from OReilly详细说明了servlets和EJB中的计时器用法。
https://stackoverflow.com/questions/1961095
复制