Servlet 默认是单例模式,在web 容器中只创建一个实例,所以多个线程同时访问servlet的时候,Servlet是线程不安全的。
那么 web 容器能为每个请求创建一个Servlet的实例(增加了系统的消耗)吗?当然是可以的,只要Servlet实现SingleThreadModel接口,就可以了。
如果使用SingleThreadMode 模式,有两处性能问题
1. 每个Servlet 创建多个对象实例
2. 如果并发高,每个servlet同时只能支持20线程的并发访问。挂起超过20个的线程。