05 servlet 多线程问题

一个网站,多个客户端来访问,这就是产生了多线程效果;

public class ThreadDemo extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    int count =0;
    public ThreadDemo() {
        super();
    }

    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        
        //加上延迟来模拟出错情况
//      try {
//          Thread.sleep(500);
//      } catch (InterruptedException e) {
//          e.printStackTrace();
//      }
        
        //加上同步锁
        synchronized (ThreadDemo.class) {
            response.getWriter().write("你是第"+count+"个访问该站点");
            count++;
        }
        
    }

}
Paste_Image.png

开发线程安全的servlet建议:

  1. 尽量不要使用成员变量,或者静态成员变量。
  2. 必须要使用成员变量,要么给使用了成员变量的代码块加同步锁,加锁的代码块的范围尽量缩小,因为有可能影响程序并发效率。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容