Servlet线程安全问题

开发者在开发Servlet程序的时候应该实现SingleThreadModel接口,以确保Servlet一次只能处理一个请求,保证Servlet是线程安全的。
自Servlet API 2.4起,目前不推荐使用此接口,因为即使Servlet即使实现SingleThreadModel接口,它也不能解决所有线程安全问题,例如多个线程可以同时访问静态变量和会话属性。因此,建议使用其他方法来解决这些线程安全问题,例如同步块等。

1 SingleThreadModel的案例

import java.io.IOException;  
import java.io.PrintWriter;  
import javax.servlet.ServletException;  
import javax.servlet.SingleThreadModel;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
  
public class MyServlet extends HttpServlet implements SingleThreadModel{  
public void doGet(HttpServletRequest request, HttpServletResponse response)  
    throws ServletException, IOException {  
    response.setContentType("text/html;charset=utf-8");  
    PrintWriter out = response.getWriter();  
          
    out.print("欢迎");  
    try{Thread.sleep(10000);}catch(Exception e){e.printStackTrace();}  
    out.print(" 访问Servlet");  
    out.close();  
    }  
}  

 

一点教程,一个分享编程知识的公众号。跟着站长一起学习和进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。

文章不涉及代码,不烧脑细胞,人人都可以学习。

当你决定关注「一点教程」,你已然超越了90%的程序员!

一点教程二维码