为何Servlet会有线程安全问题
当容器收到一个请求之后,会启动一个线程来处理该请求,如果有多个请求到达容器,并且这多个请求要访问的是同一个Servlet,则会发生多个线程调用同一个Servlet的情况,此时,就需要考虑线程安全问题了,比如,这多个线程都要修改Servlet的属性值。
如何处理线程安全问题
1)加锁:使用synchronized关键字对方法或者代码块加锁。加锁会影响一些性能
2)让一个Servlet实现SingleThreadMode接口:容器会为这样的Servlet(实现
SingleThreadMode接口 的)创建多个实例(一个线程一个实例)。因为有可能会产生过多的Servlet实例,所以,在比较大型的应用当中,尽量少用。
3)尽量不在servlet中使用类变量。
网友评论