文章詳情頁
java - servlet 聲明一個私有靜態類對象成員,那么在doPost等方法中使用該類對象的方法是否線程安全?
瀏覽:87日期:2024-01-24 17:54:30
問題描述
public class MyServlet extends HttpServlet { private static IUtils utils= null; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {utils.do(); }}
代碼結構如上,do不是靜態方法,且方法內使用的都是局部變量,做的事情就是連接數據庫做查詢,然后返回查詢結果。1.在doPost調用這個do方法是否安全?2.是否有必要聲明成靜態的,我希望這個utils不要被反復創建。
問題解答
回答1:每一個 Servlet 對象在 Web 容器中只有一個實例(單例模式),所以如果多個 HTTP 請求請求的是同一個 Servlet,那么多個 HTTP 請求對應的線程將并發調用 Servlet 的 doPost 方法 —— 簡單起見,可以將你的 IUtils 使用 ThreadLocal 封裝。
標簽:
java
排行榜
