在使用ocntroller时,由于springmvc默认是singleton的。
优点是不用每次都创建该对象,方便了回收
同时也会导致线程安全的问题出现。
当在controller中定义成员变量时,由于每个新建的对象都会保存在堆内存,每个线程持有该对象时,只要有权限都能访问到。
所以会出现线程不安全,因此尽量不要在controller中定义成员变量;或者将配置改为scope="prototype"
PS:()//我最初以为成员方法也会出现问题,事实上不会)
定义的成员方法不会有该问题
事实上每个线程的栈内存时独享的,执行开始入栈,执行完毕出栈:
即成员方法对每个线程来说是独占的,不会出现线程安全问题。
本文探讨了在SpringMVC框架下Controller作为单例模式时可能遇到的线程安全问题,尤其是在成员变量的使用上。文章指出,为了避免线程安全问题,建议不要在Controller中定义成员变量,或者通过配置将其作用域更改为原型。

6976

被折叠的 条评论
为什么被折叠?



