servlet线程安全问题

java web中的servlet默认都是单例模式的,在用户多线程请求并发访问时可能会存在线程安全问题。而是否有线程安全问题的关键是否有状态------是否有可变的静态或实例变量,如果有在会存在线程安全问题。解决方法有,

1,使用线程同步,比如用同步锁,同步关键词,或者并发包中线程安全的数据结构类等。

2,使用ThreadLocal。

Spring mvc中的controller中也默认是单例模式,也存在类似的问题,除了可采用上面两种方法解决线程安全问题外,还可以通过注解将它声明为原型模式,这样每次请求都会重新创建一个对象,默认不推荐这种方式,因为它多了重复创建销毁对象的开销。

posted on 2017-12-14 22:57  时间朋友  阅读(173)  评论(0编辑  收藏  举报

导航