问题:使用以下的代码演示servlet的线程安全问题?
同时访问以上的代码发现三次同时出现3,这就是线程的并发访问的问题。
解决方案就是:同步
给访问共享资源的代码加锁。
总结:
1.如果直接使用同步关键字,那么会导致servlet的运行效率严重的降低。
2.尽量避免使用servlet的成员变量。
3.如果避免不了那么我们就需要使用线程安全的成员变量。
ArrayList
Vector HashSet
如果需要不是线程安全的集合可以使用Collections进行线程安全的转换
4.ServletContext、HttpSession需要使用的时候一定要使用同步。
5.在servlet中最好使用局部变量。