簡體   English   中英

在servlet中使用java.util.Timer是否安全?

[英]Is it safe to use java.util.Timer inside a servlet ?

由於許多原因,在servlet中使用線程並不是一種好習慣。

java.util.Timer似乎是一個線程的包裝器。 那么,使用它也不安全嗎? 如果是這樣,在servlet中安排任務的最安全的方法是什么?

是的,你可以使用計時器。

要記住的一件重要事情是在servlet停止時取消該Timer 如果您忘記取消Timer,您的webapp將遭受內存泄漏(類加載器泄漏,因為Timer的Thread通過其ContextClassLoader綁定到WebappClassLoader)並且無法多次部署。

是。 這是非常安全的。 servlet容器將查看HTTP請求的線程,但是您可以自己生成aditional線程,無論它們的生命周期是否受限於請求的生命周期,或者更長。

例如,常見的模式是生成一個長時間運行的處理線程。 Servlet請求會將工作項放在隊列中(用於帶外處理),長時間運行的處理線程將處理這些工作項。

這是OReilly的一篇文章,詳細介紹了servlet和EJB中的計時器使用情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM