代码之家  ›  专栏  ›  技术社区  ›  Asanka

javaspring中的单例bean并发性

  •  1
  • Asanka  · 技术社区  · 6 年前

    javaspringbeans的默认范围是singleton。如果我们用一个类变量创建一个服务(bean),这个类变量可能在内部方法中发生变化,那么这个bean使用不同的线程可能会导致意外错误。所以如何避免这种情况?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Amit Naik    6 年前

    单例模式确保JVM只有一个此类实例可用 (对于Java,每个类加载器可以有多个实例;对于spring-it,每个应用程序上下文都可以有多个实例)

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

    如果您想保持状态,您可以稍后根据您的需求(例如请求、原型)来确定springbean的范围。这些作用域将有助于按照请求/bean保持状态。