对servlet网络售票造成的线程安全问题的思考

首先共享相关代码:


包com.lc.servlet;

进口;
进口java.io.printwriter;

进口javax.servlet.servletexception;
进口javax.servlet.http.httpservlet;
进口javax.servlet.http.httpservletrequest;
进口javax.servlet.http.httpservletresponse;

公共课ticketsell扩展HttpServlet {


公共国际机票= 3;假设只有三张票


public void doGet(HttpServletRequest请求,HttpServletResponse响应)
抛出IOException {返回,
PrintWriter = response.getwriter();
response.setcontenttype(文本/ HTML;字符集= GBK);


简单的处理/预订
当一个变量需要多个用户共享时,应该在访问变量和同步机制时使用。
/ /如果变量不需要直接分享在doGet()和doPost()方法可以被定义的,因此不存在安全问题的线


同步(此)方法来解决同步问题。

如果(票> 0)
{
System.out.println(你拿到票了!;
out.println(你拿到票了!;

/休眠
{试
thread.sleep(10×1000);
} catch(InterruptedException e){
自动生成catch块
E.printStackTrace();
}
票--;
}
其他的
{
System.out.println(你不买票!;
out.println(你不买票!;
}
}

}


public void doPost(HttpServletRequest请求,HttpServletResponse响应)
抛出IOException {返回,

this.doget(请求、响应);

}

}




结果如下:同时,第三次访问该资源。

关于线程问题的思考也在萧边的研究中。现在线程问题有了一定的认识。我希望你能受到相关文章的启发。