1. 程式人生 > >Servlet中如何解決執行緒安全

Servlet中如何解決執行緒安全

造成執行緒安全原因:多個執行緒併發訪問同一份資源(只有一個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);
	}
}