Java Spring中的单例豆并发

时间:2018-10-04 06:34:23

标签: java spring multithreading

Java Spring bean的默认范围是单例。如果我们使用类变量创建服务(bean),而该类变量可能在内部方法中发生变化,则该bean对不同线程的使用可能会导致意外错误,那么如何避免这种情况呢?

1 个答案:

答案 0 :(得分:1)

单例模式可确保JVM 仅提供此类的一个实例(对于Java,每个类加载器可以有多个实例,对于每个应用程序上下文则可以是多个实例)。这意味着从根本上需要将全局状态纳入应用程序。

这就是为什么我们希望Singleton类为无状态的原因,因为如果我们有任何线程访问它,那么由于缺乏并发控制,我们不希望内部变量发生突变。

如果要保持状态,可以稍后根据需要(例如请求,原型)使用spring bean的范围。这些作用域将有助于达到按请求/ bean保留状态的目的。