多线程问题

Servlet中的线程安全问题

线程安全问题是指在多线程并发执行时,会不会出现问题,如果不会出现问题,那线程是安全的,会出现问题,则线程是不安全的。由于Servlet只有一个实例,多个用户同时请求一个Servlet时,Tomcat会派生出多条线程来执行Servlet的代码,因此Servlet有不安全的隐患。

Servlet不安全的例子

见代码:
多线程问题

多线程问题

多线程问题

如果只用一个浏览器访问这个程序,程序不会出现问题,但是,这个程序是有缺憾的,并发访问时就会暴露出问题。

解决线程不安全问题

办法是:在Servlet中尽量不要定义成员变量,使用局部变量,把变量定义在方法中,多线程并发读写的Servlet属性会导致数据不同步。但是,如果只是并发的读属性而不写入,则不存在同步问题。