一个网站,多个客户端来访问,这就是产生了多线程效果;
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建议:
- 尽量不要使用成员变量,或者静态成员变量。
- 必须要使用成员变量,要么给使用了成员变量的代码块加同步锁,加锁的代码块的范围尽量缩小,因为有可能影响程序并发效率。