Java ArrayList / String / 原子变量读取线程安全吗?

2024-01-05

我一直在思考和阅读,但可以找到绝对权威的答案。

我有几个由包含 ArrayList、字符串和原始值的对象组成的深层数据结构。我可以保证这些结构中的数据不会改变(没有线程会对列表进行结构更改、更改引用、更改原语)。

我想知道读取这些结构中的数据是否是线程安全的;即,从对象中递归读取变量、迭代 ArrayList 等以在不同步的情况下从多个线程中的结构中提取信息是否安全?


它不安全的唯一原因是,如果一个线程正在写入某个字段,而另一个线程同时从该字段读取数据。不竞争条件 http://en.wikipedia.org/wiki/Race_condition如果数据没有改变则存在。使对象不可变是保证它们线程安全的一种方法。从阅读开始this http://www.ibm.com/developerworks/java/library/j-jtp09263.html来自 IBM 的文章。

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

Java ArrayList / String / 原子变量读取线程安全吗? 的相关文章

随机推荐

  • 仅比较对象左侧或右侧

    快速提问 有没有更好的 即更有效 更简洁 的方法来做到这一点 compare object a b SideIndicator eq lt Detail Compare Object给定参数 excludeDifferent and inc
  • 从文档正文中插入元标记?

    我需要添加一个元标记 具体来说 到某个页面 但是我们模板的设置方式 我不可能直接编辑 HEAD 标签的代码 出于公司原因 而不是技术原因 因此 有没有办法在 BODY 标签中使用 JQuery 来添加此元标签 也许你可以尝试这个 jQuer
  • 为什么 TreeViewItem 的 MouseDoubleClick 事件每次双击都会引发多次?

    XAML
  • 在 Web 项目之外使用 Razor

    我想使用 Razor 视图引擎生成电子邮件 根据我所读到的内容 我可以使用这些操作系统项目从我的网站上做到这一点 Postal http aboutcode net postal ActionMailer Net http geekshar
  • 为什么定义静态成员变量时不遵循定义顺序?

    我知道来自不同翻译单元的静态变量的初始化顺序问题 然而 我的问题是在一个翻译单元内 实际上是在一个结构内 template
  • HttpClient 超时和 Polly Bulkhead 策略问题

    我使用 Polly Bulkhead 策略遇到了许多超时异常 该策略帮助我限制发送到特定主机的并发调用的数量 然而 HttpClient 超时时间似乎会影响整个委托 我使用 IHttpClientFactory 通过以下代码进行配置 ser
  • JWT(JSON Web Token)自动延长过期时间

    我想对我们的新 REST API 实施基于 JWT 的身份验证 但是既然token里设置了过期时间 那么是否可以自动延长呢 如果用户在这段时间内积极使用该应用程序 我不希望他们需要在每 X 分钟后登录一次 这将是一个巨大的用户体验失败 但是
  • Haskell 中的单例类型

    作为对各种依赖类型形式化技术进行调查的一部分 我遇到了一篇论文 提倡使用单例类型 只有一个居民的类型 作为支持依赖类型编程的一种方式 根据此消息来源 在 Haskell 中 运行时值和编译时类型之间存在分离 由于引入的类型 值同构 在使用单
  • VS Code:如何将代码片段占位符转换为大写或小写?

    在 VS Code 中 用于创建的文档用户定义的片段 https code visualstudio com docs editor userdefinedsnippets提到一些Grammar https code visualstudi
  • R:如果加载插入符号包,set.seed() 结果不匹配

    我在用createFolds 在 R 版本 3 3 0 中创建训练 测试分区 为了使结果可重复 我使用了set seed 种子值为 10 正如预期的那样 结果 生成的折叠 是可重复的 但是一旦我在设置种子后加载插入符号包 然后使用creat
  • 将对象实例写入 C# 的工具(用于单元测试)

    假设我有一个接受对象列表的方法 该方法通常可以轻松处理 20 个对象 每个对象都有大约 15 个属性 为了对此进行单元测试 我需要输入所有 20 个对象 以便可以将它们传递到我的方法中 当我可以在调试器监视窗口中看到我需要的完美示例时 这真
  • 加载共享库时出错,无法打开共享对象文件:没有这样的文件或目录(hiredis)

    我正处于编写一个在后端使用 redis 的 C 程序的 alpha 阶段 我尝试过构建 安装hiredis make sudo make install 并运行测试 大部分通过 但是当尝试构建示例 c https github com re
  • Laravel 护照范围

    我对 laravel 范围部分有点困惑 我有一个用户模型和表 如何为用户分配用户 客户和 或管理员的角色 我有一个带有 vue 和 laravel api 后端的 SPA 我用https laravel com docs 5 3 passp
  • Android 版 Canvas 中的撤消和重做

    我正在使用定制版本指甲油 http developer android com resources samples ApiDemos src com example android apis graphics FingerPaint htm
  • 如何在 ASP.net core 中按请求缓存

    我的旧代码如下所示 public static class DbHelper One conection per request public static Database CurrentDb if HttpContext Current
  • JavaScript 中的变量有多昂贵?

    局部变量有多昂贵 var v 全局变量 window v 和跨全局变量 parent v 在 JavaScript 中 在主要浏览器中 有人对此进行过良好的测试吗 忽略解释器 解析器的优缺点 重要的是运行时必须查看作用域链的各个部分的程度
  • 带钩子的应用程序加载启动画面

    在使用带钩子的功能组件时 如何实现加载资源的同时显示闪屏 使用带有钩子的应用程序加载和 或启动屏幕的模式是什么 Thanks Bill 如果你只明白Hook s useState 这是一个非常容易的改变 这可以简单地转换为函数 并使用以下方
  • 如何设计协议缓冲区中未来的附加枚举值?

    Protocol buffers 的吸引人的功能之一是它允许您扩展消息定义 而不会破坏使用旧定义的代码 对于枚举的情况根据文档 https developers google com protocol buffers docs proto
  • Windows 中的网络文件传输

    我想使用 C 或 C 通过网络传输文件 我应该查找哪些主题 我怎样才能做到这一点 您应该从选择协议开始 HTTPS http en wikipedia org wiki HTTPS and SFTP http en wikipedia or
  • Java ArrayList / String / 原子变量读取线程安全吗?

    我一直在思考和阅读 但可以找到绝对权威的答案 我有几个由包含 ArrayList 字符串和原始值的对象组成的深层数据结构 我可以保证这些结构中的数据不会改变 没有线程会对列表进行结构更改 更改引用 更改原语 我想知道读取这些结构中的数据是否