servlet是線程安全的么


servlet生命周期

三個重要方法

1  init() 

  進行資源的加載

2 service() 

  處理請求,根據請求方式,調用doGet或者doPost

3 destroy()

  進行資源的釋放

 

servlet是單實例的,假如在處理請求時候,多線程訪問了servlet的成員變量,則servlet是線程不安全的。

只要保證在service()方法中訪問的都是局部變量,則servlet是線程安全的。

多線程下每個線程對局部變量都會有自己的一份copy,這樣對局部變量的修改只會影響到自己的copy而不會對別的線程產生影響

public class HelloWorldServlet extends HttpServlet
{
    String message;

    private static final long serialVersionUID = 787553024399133588L;
    
    public void service(HttpServletRequest request,HttpServletResponse response) throws IOException{
        message =request.getParameter("message");
        PrintWriter pw = response.getWriter();
        try
        {
            Thread.sleep(5000);
        }
        catch (InterruptedException e)
        {
            e.printStackTrace();
        }
        pw.write("<div><strong>Hello World</strong>!</div>"+message);
        pw.close();
    }
    
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM