正文是搬运的,我随便摘抄一下。
原文放头顶,侵删。
做个简单总结:
1.不推荐使用SingleThreadModel接口,实现该接口后,该Servlet的实例化对象将会只有一个线程来运行。在只有一个Servlet实例化对象的情况下,这种方式理论上能解决大部分并发问题,但是并不合适。在处理多http请求时,该方案就显得很慢;而在多Servlet的情况下,并不能保证次序,也就是高并发带来的线程安全问题。(比方说该Servlet的作用是对某个键值对进行读写操作)
2.使用Synchronized。对Servlet中可能造成并发问题的部分使用Synchronized块,来解决并发问题。并且使用单实例。
3.不要在Servlet里面再写新线程。多线程访问的情况下,Servlet本身已经不完全安全,Synchronized 对 New Thread()依然不能保证线程安全。
4.对HttpRequest,HttpSession,方法内部非static等对象无需考虑多并发问题。