2009-06-01 77 views
2

我很好奇以下概念通常如何在Java EE容器內執行,是一個實例,每個請求創建,還是一個實例爲所有的請求?線程Java EE中的webapps

  • Servlet的
  • 標籤

我想知道這是因爲最近我一直在使用大量StringBuffers在我的自定義標籤,避免StringBuilder的,因爲它不是線程安全的。我想知道肯定這個東西是如何工作的,所以我可以寫出更好的代碼

回答

3

都正確。容器可以重新使用舊實例來處理新請求,甚至可以在需要更多請求時創建新實例。

使用StringBuilder的應該是安全的,只要它的使用不越過邊界情況(由靜態用法,返回StringBuilders等)。 所以,如果你使用它的函數/方法來創建你的字符串輸出,你很安全。

1

一些應用服務器實現線程池,將執行一定數量的每個線程的請求,根據需要進行切換負載。更簡單的引擎會爲每個請求後臺一個線程。但是,如果你永遠不能同時從多線程訪問你的StringBuilder,你應該永遠不會遇到關於線程安全的問題。