Servlet线程安全问题

    xiaoxiao2021-12-14  18

    Servlet线程安全问题

    明确: Servlet的设计是一个单实例多线程。

    线程安全要求将变量创建成一个局部变量,而不要创建成成员变量.

    线程同步问题解决:

    Servlet是一个单实例多线程。

    以前的做法,现在已被废除了

    Implements SingleThreadModel

    多实例:一个线程过来就创建一个

    解决的办法:不要在类中去创建实例变量(成员变量),如果创建了就不要在doGet和doPost方法里修改它,把变量创建为局部变量。

    import java.io.IOException; 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 ServletDemo7 extends HttpServlet{ int a = 0 ; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println(Thread.currentThread().getName() + "进来了"); a++ ; System.out.println(Thread.currentThread().getName() + ":" + a); try { Thread.sleep(5000) ; } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + ":" + a); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
    转载请注明原文地址: https://ju.6miu.com/read-969216.html

    最新回复(0)