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();
}
}
热门文章
优秀文章