Serverlt 的线程安全有关问题笔记

Serverlt 的线程安全问题笔记

1,Servlet容器是以单实例多线程的形式调用一个servlet的。Servlet容器通过一个线程池来调用servlet实例。

2,类变量和实例变量是非线程安全的,所以在servelt里要注意尽量少用,或者只用只读的类变量跟实例变量。

3,ServletContext,HttpSession类的getAttribute()是非线程安全的。为避免线程安全问题,可对其进行同步synchronized访问,但会有排队性能问题。

4,Servlet本身就是多线程的,尽量不要在servlet里再创建线程类,这样会造成管理的复杂性。

5,Servlet访问外部对象,并进行修改操作时,要加锁,做到互斥访问。

6,在多线程的环境中要使用同步的集合类。例如用Vector代替ArrayList,Hashtable代替HashMap。