繁体   English   中英

Java Spring 中的单例 bean 并发

[英]singleton beans concurrency in Java Spring

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

单例模式确保该类只有一个实例可供 JVM 使用(在 Java 的情况下,每个类加载器可以有多个实例/在 Spring 的情况下,每个应用程序上下文) 这意味着本质上需要一个全局状态进入一个应用程序。

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

如果您想保持状态,您可以稍后根据您的要求(例如请求、原型)设置 spring bean 的范围。 这些范围将有助于达到根据请求/bean 保持状态的目的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM