Servlet中如何解決執行緒安全
阿新 • • 發佈:2018-12-14
造成執行緒安全原因:多個執行緒併發訪問同一份資源(只有一個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); } }