版权声明:《==study hard and make progress every day==》 https://blog.csdn.net/qq_38225558/article/details/82960199
造成线程安全原因:多个线程并发访问同一份资源(只有一个Servlet对象)
方法一:让自己的Servlet类实现javax.servlet.SingleThreadModel接口,同时只能让一个线程来访问资源,若是多个资源则进入等待 (不推荐)
方法二:Servlet类中不要使用成员变量,使用局部变量!!
ex:
@WebServlet("/ThreadServlet")
public class ThreadServlet extends HttpServlet /*implements SingleThreadModel*/{
/*
private int num1 = 0;
private int num2 = 0;
*/
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
int num1 = Integer.parseInt(req.getParameter("num1"));
int num2 = Integer.parseInt(req.getParameter("num2"));
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(num1+num2);
}
}