Spring中由容器托管的类如果没有特殊声明(scope = “prototype”),则默认为单列模式,当多用户同时请求一个服务时,容器会给每一个请求分配一个线程,这是多个线程会并发执行该请求多对应的业务逻辑(成员方法),此时就要注意了,如果该处理逻辑中有对该单列状态的修改(体现为该单列的成员属性),则必须考虑线程同步问题;否则由于在业务逻辑中执行所需的局部变量会分配在栈空间中,所以不需要同步。
ps:全局数据区存放静态全局变量(即单例中的类),堆区存放分配的对象,栈用来存放局部变量,因此对象的引用只有可能出现在栈和全局数据区中。
探讨Spring框架中默认单例bean在多线程环境下的潜在线程安全问题及解决方案。分析不同作用域下bean的状态管理,并强调在业务逻辑中进行状态修改时需考虑的同步策略。
915

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



