如果多个线程尝试访问单例对象会发生什么

2024-02-10

不是在实例化期间,而是在单例对象实例化完成后,如果两个或多个线程尝试访问同一个单例对象,会发生什么情况?特别是在单例对象需要花费大量时间来处理请求的情况下(比如1分钟)...在这种情况下,如果例如,5个线程尝试访问同一个单例对象,结果会是什么?

附加问题:通常我们什么时候应该采用单例模式,什么时候应该避免它?


除非在单例中执行同步(锁定),否则答案是这样的:这是一个混战。

尽管单例确保在请求时仅使用对象的一个​​实例,但该模式本身并不本质上提供任何形式的线程安全性。这由实施者决定。

在您引用的特定情况下(使用长时间运行的方法),同步对使用类或对象级变量的任何方法的访问至关重要。如果不这样做,很可能会导致竞争条件。

祝你好运!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果多个线程尝试访问单例对象会发生什么 的相关文章

  • 在不使用 Singleton 的情况下从非 bean 对象获取 Spring 应用程序上下文

    我需要从非 bean 对象获取 spring 应用程序上下文 在 SO 的另一个线程中 接受的答案建议使用单例来获取应用程序上下文 获取 Spring 应用程序上下文 https stackoverflow com questions 12
  • 如果不实例化两次,则无法在ConfigureServices中使用注册的单例

    我有一个 Net Core 项目 它注册了许多单例 如下所示 public void ConfigureServices IServiceCollection services services AddMemoryCache service
  • Scala 中单例对象的解释

    我得到的编码是 您基本上提供了一个 object SomeClass 和一个 class SomeClass 并且伴随类是类声明 而对象是单例 http en wikipedia org wiki Singleton pattern 您无法
  • 单例类与具有静态成员的类

    尽管关于该主题的主题有很多 但我仍然不清楚何时选择哪种方法 我希望通过讨论一个具体的例子 我最终能 明白 注意 我这里的语言是 Cocoa 尽管一般问题不是特定于语言的 我有一个类 TaskQueue 我想用它来 从我的代码中的任何位置访问
  • OSGI环境中单例的迁移解决方案

    我正在 Java EE 环境中工作 其中每个应用程序都位于其自己的 war 文件中 在每个应用程序 war 文件的 WEB INF lib 中 有一个由所有应用程序共享的公共 jar 这个公共 jar 包含几个可以从代码中的许多点访问的单例
  • GOF 单例模式有任何可行的替代方案吗?

    面对现实吧 单例模式是极具争议性 https stackoverflow com questions 11831 singletons good design or a crutch 11839大量程序员的主题both栅栏的两侧 有些人觉得
  • 在单例中使用删除的复制构造函数

    我已经实现了单例模式 例如this https stackoverflow com questions 270947 can any one provide me a sample of singleton in c 271104 2711
  • 在单例模式中使用 CDI

    我正在尝试将记录器对象注入到按照单例方法实现的类中 代码几乎是这样的 Logger class public class LoggerFactory Produces public Logger getLogger InjectionPoi
  • 跨模块单例

    我正在尝试实现单例 但在导入模块时遇到了困难 我的设置如下 我正在使用Python 2 7 MODULE 1 class SingletonClass object def new self args kwargs if not self
  • 这些为单例创建静态实例的方法有什么区别?

    我最近遇到了一个错误 该错误仅在将库构建为发布版本而不是调试版本时才会显现出来 该库是一个带有 COM 包装器的 NET dll 我正在使用 CoCreateInstance 在非托管 C 应用程序中从 dll 创建一个类 当我最终找到该错
  • 我正在使用依赖注入:我应该将哪些类型绑定为单例?

    关于单例是否 不好 以及应该使用什么模式存在很多问题 他们通常关注单例设计模式 其中涉及从类的静态方法中检索单例实例 这不是这些问题之一 自从几个月前我真正 发现 依赖注入以来 我一直在推动它在我们团队中的采用 随着时间的推移从我们的代码中
  • Singleton 对象 - 在静态块中或在 getInstance() 中;应该使用哪个

    下面是两种实现单例的方法 各自的优点和缺点是什么 静态初始化 class Singleton private Singleton instance static instance new Singleton public Singleton
  • 在单例上使用 Dispose 来清理资源

    我的问题可能更多地与语义有关 而不是与实际使用有关IDisposable 我正在致力于实现一个单例类 该类负责管理在应用程序执行期间创建的数据库实例 当应用程序关闭时 应删除该数据库 现在我正在处理这个删除Cleanup 应用程序在关闭时调
  • Android 中的静态单例生命周期

    我有一些不清楚的情况 最后一个持有 Activity 的引用被销毁后 静态单例会被垃圾回收吗 因为Application中没有更多对单例实例的引用 那么我可以依赖单身人士吗 由官方提供安卓文档 http developer android
  • Python 单例/对象实例化

    我正在学习Python 并且一直在尝试实现一个单例类型的类作为测试 我的代码如下 Singleton instance None class Singleton def init self global instance if instan
  • 单例模式 - 早期绑定(涉及静态变量)是否会减少互斥锁的需要?

    他们说早期绑定解决了同步问题 我无法理解 如何 这是 Java 的特殊之处还是 C 也同样适用 那么 使用这种方法我们实际上不需要互斥锁 JVM 确保每个类都已完全加载 然后才允许通过其他线程对其进行任何访问 这意味着所有静态变量 包括un
  • Java:基于 Web 的应用程序中的单例类实例

    我在 Web Application 中有这个 Singleton 类 public class MyDAO private static MyDAO instance private MyDAO public static MyDAO g
  • 在实现接口的类上强制使用单例模式

    我最好用一个例子来解释这个问题 我有一个接口模型可用于访问数据 模型可以有不同的实现 可以以各种格式表示数据 例如 XMl txt 格式等 Model不关心格式 可以说这样的一个实现是myxml模型 现在我想强迫myxml模型以及其他所有实
  • MVC和依赖注入,被迫使用单例Controller?

    我正在致力于构建一个根据 MVC 原则运行并利用依赖注入的 PHP 框架 我想我已经把前端控制器部分放下了 有一个工作路由器实例化控制器实例并根据请求的 URI 调用适当的操作 接下来是依赖注入 我想实现一个使用反射解决依赖关系的容器 这样
  • 这是 C# 的有效、惰性、线程安全的 Singleton 实现吗?

    我实现了这样的单例模式 public sealed class MyClass public static MyClass Instance get return SingletonHolder instance static class

随机推荐

  • iOS 8.1 下 UIPopoverController 出现之前出现不可预测的延迟

    SDK 8 1 在 iOS 8 1 下运行时会出现此问题 但在 iOS 7 下运行时不会出现此问题 它仅适用于 iPad 该问题在模拟器和硬件设备上都会出现 下面的代码演示了一个视图控制器 其中包含一个具有 1 行的 UITableView
  • 未解析的外部符号 C++ 与汇编器

    我正在尝试在汇编器中创建函数以在 C 中使用它 我的问题是我无法编译我的代码 我正在使用 Visual studio 2012 我在构建定制中添加了 masm 所以我不知道出了什么问题 C include
  • Visual Studio 2019 错误 - 无法加载文件或程序集或其依赖项之一

    我在运行我的项目时遇到一些问题 当我尝试运行时 出现以下错误 FileNotFoundException 无法加载文件或程序集 Dapper Version 2 0 0 0 Culture neutral PublicKeyToken nu
  • 删除c中数组的重复名称

    这就是我要做的 c 应该可以删除具有指定名称的动物 如果存在更多同名动物 则应删除所有同名动物 这是我的代码 void deleteAnimalByName char animalName int nrOfAnimals ANIMAL an
  • 执行代码块一定次数

    所以我想执行一些代码N次 N 是文本框的值 例如 12 我不知道如何实现这一点 但我的脑海里浮现出这样的事情 For Each i as 1 in textbox1 text some code Next or dim num1 as in
  • asciidoc宏

    我使用 asciidoc 来渲染文本 我很难理解宏 我的目标是进行简单的宏处理 就像在 LaTeX 中一样 我想写两个宏 FOO应替换为 bar MYTEXT xyz 应替换为 This is my text xyz 也许用不同的方式传递参
  • 如何从 Android 版 Google+ API 获取当前位置?

    我需要从 Android 版 Google API 获取当前位置 我已经在 Google API 控制台中完成了所有操作 并将我的应用程序与带有 SHA1 和包名称的客户端 ID 链接起来 我成功获取了有关用户名 个人资料图片 封面图片 电
  • 如何在python3中使用ldap3绑定(验证)用户

    我正在尝试将一些代码更新为 python3 使用ldap3 http ldap3 readthedocs org en latest quicktour html版本 0 9 7 4 https pypi python org pypi l
  • 如何在android apk中保存私有字符串值?

    我知道我可以将字符串保存在 res values strings xml 中 但是如果有人反汇编 dex 文件或 apk 文件 那么他将能够看到硬编码字符串或 res values strings xml 字符串 有没有办法存储反汇编后不会
  • 有没有办法让 Eclipse 报告一般“catch (Exception e)”作为错误/警告(在 java 中)?

    我试图鼓励在 Java 代码中不捕获一般异常的最佳实践 例如 try catch Exception e bad 有没有办法在 Eclipse 中将其标记为错误 警告 我知道 PMD 会注意到这一点 但我现在宁愿避免将其集成到每个人的构建环
  • Android 按钮 KeyDown - KeyUp |不同的按钮事件

    我有一个关于开发 Android 应用程序的简单问题 问题是不同类型的按钮 例如 当我的手指放在按钮上时 音乐就会播放 但是当我的手指放在按钮上时 音乐就会停止 我怎样才能做到这一点 这可能是不同类型的按钮事件 但我不知道 我用谷歌搜索 但
  • 如何在简单的 Kivy 应用程序中将 Pandas 数据框显示为表格?

    我想构建一个简单的 Kivy 应用程序 要求用户输入一个整数 MTP 要求用户输入延迟间隔 delay 用户按下提交按钮后查询 url 然后从 该查询创建一个显示的 pandas 数据框 就像 表 在 Kivy 应用程序的主屏幕上 然后输出
  • 如何将标签中的文本与右侧对齐?

    这是我的文件标签 如果标签太长 它就会超出屏幕 从而使我不得不滚动 我已经尝试了以下属性 单独的时间 RightToLeft as Yes ContentAlignment作为右下或右上 然而 它们都不起作用 什么是正确的属性 尝试设置Au
  • NSSortDescriptor 按核心数据对多关系中的项目数量进行排序

    使用 Core Data 多关系时 这是一个长期存在的问题 很难使用以下命令对获取请求进行排序NSSortDescriptor on a Parent基于实体的数量children与 a 处于一对多关系Child实体 这在与NSFetche
  • 如何对 xml 文件中的 IBM MobileFirst SQL 适配器用户名密码 url 和端口进行哈希处理?

    我正在使用 IBM MobileFirst SQL 适配器从 AWS Oracle RDS 获取数据 为了连接到 sql 适配器 我们需要提供用户名 密码 url 和端口 连接有效 但是 我应该如何散列它以便没有人可以读取它 这是为了使其更
  • 配置字符串的 winforms 连接属性对话框

    有没有办法在运行时显示用于连接字符串浏览 针对数据库 的连接属性对话框 因为我希望用户能够使用 GUI 连接到各种数据库 与我们在 Visual Studio 连接属性对话框中获得的相同 提前致谢 寻找this http pedotnet
  • 仅获取数组 mongoose 的最后一个元素

    我的文档中有数组 我尝试接收该数组的最后一个元素 我的代码是 Post find id postId comments slice 1 这给了我所有的对象 但注释数组仅包含最后一个元素 另一方面 Post find id postId co
  • Django South:如何在迁移中访问子包中的模型

    由于我们的应用程序有很多模型 因此我们将它们放置在 models 包的子包中 即Cheddar模型不会在models Cheddar 而是在models cheese Cheddar 看来我无法在南方数据迁移中访问这些模型 即使我创建了一个
  • Jooq中有没有办法通过示例进行查询?

    I ve a PersonPojo and PersonRecord由 Jooq 生成 现在我想做这样的事情 Person p new PersonPojo p setId 10 create selectFrom Tables PERSO
  • 如果多个线程尝试访问单例对象会发生什么

    不是在实例化期间 而是在单例对象实例化完成后 如果两个或多个线程尝试访问同一个单例对象 会发生什么情况 特别是在单例对象需要花费大量时间来处理请求的情况下 比如1分钟 在这种情况下 如果例如 5个线程尝试访问同一个单例对象 结果会是什么 附