当前位置: 首页 > 知识库问答 >
问题:

Spring单例bean线程安全吗?

家西岭
2023-03-14

我想知道Spring单例豆是否是线程安全的,如果是,那么为什么,如果不是,那么为什么?

因为我是初学者,所以帮助将不胜感激。

共有3个答案

吴刚毅
2023-03-14

Spring单例bean不是线程安全的,因为Spring实例化了它们。很抱歉

夔高寒
2023-03-14

我有不同的看法:SpringSingletonBean只创建一次,在任何时候都只能有一个实例可用。

假设您有一个在非同步方法中修改的实例变量。在多线程环境中,将同一类实例分配给所有线程,2个并发线程可以更新/更改可能导致意外情况的实例变量。Singleton Bean不提供线程安全,现在您知道实例变量的使用可能会导致意外的结果,您有两个选项来解决相同的问题:

  1. 不要在多线程环境中使用实例变量。或
  2. 在修改实例变量的任何位置对方法使用同步块/关键字,以避免意外结果
隆飞宇
2023-03-14

没有。这两个概念甚至没有关系。

单身是关于创造的。此设计模式确保只创建一个类实例。

线程安全是关于执行的。引用维基百科:

如果一段代码只以保证多个线程同时安全执行的方式操作共享数据结构,那么它就是线程安全的。

因此,线程安全最终取决于代码和代码。这就是为什么Spring bean本身不是线程安全的原因。

 类似资料:
  • 我在多线程环境中做的工作很少。所以,我需要知道below类的getInstance函数是否是线程安全的。这是单例类: 在getInstance函数(未注释)中,返回静态对象的引用。它需要线程安全机制吗? 在第二个getInstance(注释)中,如果singleObject为null,我们就创建对象。所以,它需要锁定机制,需要同步,对吧?

  • 问题内容: 我写了下面的Singleton类。我不确定这是否是线程安全的单例类吗? 谁能帮我这个?我在上述Singleton课堂上的任何想法都会有很大帮助。 更新代码: 我正在尝试将波希米亚建议纳入我的代码中。这是更新的代码,我得到了- 谁能看一下,让我知道这次是否正确? 问题答案: 但是有一个简单的技巧,可以让你的代码是线程安全的实现,并不需要同步!它称为“ 按需初始化持有人”习惯用法,它看起来

  • 静态编程语言单例(更具体地说,对象声明)在结构上是线程安全的吗?如果不是,用静态编程语言编写线程安全单例的最佳实践是什么? 我想是的,但我在文件中找不到任何明确的声明。

  • 问题内容: 有关Singletons的维基百科文章提到了一些用线程安全的方法来用Java实现结构。对于我的问题,让我们考虑具有冗长的初始化过程并且一次被多个线程访问的Singleton。 首先,这个未提及的方法是线程安全的吗?如果是的话,它在什么上进行同步? 其次,为什么以下实现线程安全且在初始化时是懒惰的?如果两个线程同时进入该方法,到底会发生什么? 最后,在第二个示例中,如果一个线程首先获取一

  • 我今天在思考这个问题。下面是我正在思考的一个场景。 singletonClassObj。添加两个数字(10,20); SingletonClassObj.addTwoNumbers(100,200); 现在我的问题是什么,假设Thread-1首先执行并调用方法。那么有没有可能在整个函数被线程-1执行之前,线程-2调用函数并更改x和y的值?例如,线程-1以10和20的形式发送数据,在将求和分配给变量

  • 本文向大家介绍枚举单例 线程安全-Java版相关面试题,主要包含被问及枚举单例 线程安全-Java版时的应答技巧和注意事项,需要的朋友参考一下 用枚举写单例实在太简单了!这也是它最大的优点。下面这段代码就是声明枚举实例的通常做法。 我们可以通过EasySingleton.INSTANCE来访问实例,这比调用getInstance()方法简单多了。创建枚举默认就是线程安全的,所以不需要担心doubl