2012-07-02 67 views
4

我們已經和同事們討論了在Java中使用web應用中的線程。是否鼓勵在Web應用程序中使用線程?

他們的觀點是,不建議在Java Web應用程序中使用線程,因爲它們不受容器管理。 一般來說,我可以這樣做,因爲線程可能會干擾容器。但是,如果不是Java EE應用程序,而是簡單的servlet-app,應該用什麼來代替它?

+0

在討論中使用線程的原因或上下文是什麼? –

+0

在我們的例子中,我們有一個Web應用程序,需要定期檢查某個數據庫中的狀態,以更新其自己的數據庫。 – VasiliyL

回答

9

在webapp中使用線程本身不是問題。這取決於你爲什麼以及如何使用它們。特別是,如果您有1000個用戶,並且您爲每個用戶啓動一個線程,那麼您將使JVM屈膝。

但是,如果線程非常粗糙地啓動,那麼對於一組特定的用戶和用例,如果使用線程池來限制這些線程的數量,則不應該有任何問題。理解你在做什麼很重要。

另外,請確保不要將HttpServletRequest或HttpServletResponse對象傳遞給這樣的線程,因爲它們並不意味着被多個併發線程使用,並且一旦處理完請求就不會再使用它們。

+1

此外,確保爲這種情況創建的任何線程*非常*短命 - 否則你在管理地獄,因爲如果你取消部署Web應用程序,你的線程可能會像殭屍一樣存活。在這種情況下,殭屍仍然很受歡迎,但值得迴避。 –

+0

感謝您的回答。 – VasiliyL

+0

感謝您的回答。總的來說,你證明了我的立場,即使用它們並不是一種壞習慣或不鼓勵的做法。這只是一個恰當的使用和仔細的編碼問題,對於那裏的每一項技術都是如此。 – VasiliyL

相關問題