Java 中“易失性”是什么意思?

2023-12-24

We use volatile在我们的一个项目中,维护由不同线程访问的变量的相同副本。我的问题是是否可以使用volatile with static。编译器没有给出任何错误,但我不明白使用两者的原因。


如果没有阅读内存模型规范,我建议您阅读http://jeremymanson.blogspot.com/2008/11/what-volatile-means-in-java.html http://jeremymanson.blogspot.com/2008/11/what-volatile-means-in-java.html。它是由其中一位写的Java内存模型 https://en.wikipedia.org/wiki/Java_memory_model作者,应该回答你的问题。从以下角度思考内存读取和写入发生在之前 https://secure.wikimedia.org/wikipedia/en/wiki/Java_Memory_Model#The_memory_model条款也很有帮助; Java 5 开始的 JMM 添加了happens-before语义volatile.

具体来说,当您从一个线程读取 易失性变量时,该线程现在可以看到所有其他线程对该易失性变量的写入(包括对该易失性变量的写入)。

是的,你可以使用static https://stackoverflow.com/questions/413898/what-does-the-static-keyword-do-in-java with volatile。他们做不同的事情。

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

Java 中“易失性”是什么意思? 的相关文章

随机推荐

  • 使用 SQLCipher 加密后无法压缩 Android SQLite 数据库

    我随我的应用程序提供了一个只读数据库 将其包含在 Assets Database 目录中 所有数据均已预先填充 集成后SQLCipher并对数据库进行加密 我注意到 APK 大小从25MB 至 150MB 原因是SQLitedb 文件不再被
  • 用于图像分割的张量流的 sigmoid_cross_entropy 损失函数

    我试图理解什么是sigmoid cross entropy损失函数对于图像分割神经网络的作用 这是相关的 Tensorflow 源码code https github com tensorflow tensorflow blob 600ca
  • 生产环境中显示开发异常

    我知道这是一个很大的 不 并且在我的网站上线时不应该显示开发人员错误页面 我该怎么做才能确保开发环境错误消息不会出现在生产中 为什么会出现这些 我以为在生产模式下它默认是关闭的 我错过了一个设置吗 Note 这是在共享服务器上 我使用的是a
  • ArangoDB - 如何在图遍历中执行计算?

    我有一个简单的图表来跟踪我借钱给的人 所以图表看起来像这样 userB owes to amount 200 gt userA userC owes to amount 150 gt userA 等等 假设您需要使用图形遍历来找出每个用户欠
  • 控件不显示是否在后台线程上运行(c# winform)

    我有一个表格 复杂形式在代码中 具有多个控件 需要一些时间来加载 因此 我决定放入一个单独的线程中 以减少初始加载时间 除了等待表单上的标签控件 Form1在代码中 最初不显示 就在 Form1 响起之前的一瞬间 所以我的问题是 为什么标签
  • QMimeData 中的 Python 对象

    我正在基于我的自定义模型实现拖放 QTreeView 一切正常 我的树显示数据 启用了拖放 现在最后一步就在我面前 放置和传输拖动的数据 为此 我需要在模型中实现 mimeTypes mimeData 和 dropMimeData 方法 现
  • 将多个canvas转换为html5中的dataURL

    我想加入多个画布来制作一个图像 那么有没有什么方法可以将多于一张画布隐藏起来toDataURL制作单个图像 创建一个函数 该函数接受多个参数 画布元素 将它们放在一个空白画布上 然后返回新制作的画布的 dataurl var getImad
  • Java 中的逻辑表示法

    绝对基本的 Java 问题 我在 Google 上很难找到 以下是什么意思 7 8 0 这相当于写 7 0 8 0 我写了一个快速的 main 来测试这一点 情况似乎确实如此 我只是想确保我没有遗漏任何东西 Nope is 按位和 http
  • Python 应用程序输出到系统日志服务器

    我正在尝试在谷歌上进行一些搜索 每 5 分钟左右循环一次 当它受到攻击时 我希望它将结果推送到系统日志服务器 我对 python 很陌生 所以请原谅我的无知 我已经搜索了很长时间 但找不到我的问题的答案 我打算添加多个查询来查找不同的结果
  • 逻辑数组 - 在赋值 A(I) = B 中,B 和 I 中的元素数量必须相同

    我有三个矩阵 A B和C 当B大于A时 我想用A使该值饱和 它表示I中的元素数量 即 B gt A 必须与A 中的元素数量 我检查了下面 它们是相同的 gt gt A 5 5 5 5 5 5 5 5 5 gt gt B 2 2 2 2 2
  • 尝试将 Django 国家添加到 Django

    我是 django 的新手 我正在尝试安装 django 国家 但遇到了问题 我安装自http pypi python org pypi django countries 1 0 1 http pypi python org pypi dj
  • 在 asp.net mvc 中使用 jQuery 动态删除表行

    我有一个表 可以动态添加和删除行 model AHBReports Models AdjustmentModel using Html BeginForm table Html EditorFor model gt model Adjust
  • 确定运行 .NET 应用程序的系统要求

    如何确定 NET 应用程序的最低系统要求 我希望能够确定应列出的运行应用程序的最低系统要求 RAM CPU 等 该应用程序是用 C 编写的 并使用 NET 3 5 和 DirectX9 这一切都是关于反复试验 在各种设置中运行它以查看它是否
  • 添加 TwilioController 基类继承后,Microsoft Azure MVC 3 Web 角色未启动

    Azure Web 角色 MVC 3 项目 不会以 Twilio 控制器类启动 我有一个托管在 MS Azure 上的 MVC 3 应用程序 它发布到 Azure Web 角色 没有问题 我添加了 Nuget Twilio 和 Twilio
  • Android 向后代码兼容性

    我正在开发一个应用程序 使用 android hardware Camera parameters getSupportedPictureSizes 这仅适用于 SDK 版本 8 我希望与 SDK 4 兼容 所以我这样做了 if Build
  • 属性错误:“模块”对象没有属性“读者”[重复]

    这个问题在这里已经有答案了 我收到错误 AttributeError 模块 对象没有属性 读者 当我运行下面的代码但我不明白为什么 import csv with open test csv as f q csv reader f 您导入了
  • Pod 处于挂起阶段(错误:FailedScheduling:节点与节点选择器不匹配)

    我的其中一个 pod 有问题 它说它处于待处理状态 如果我描述这个 Pod 我会看到以下内容 Events Type Reason Age From Message Normal NotTriggerScaleUp 1m x58 over
  • 使用 Android Studio 3.1 和 gradle 3.1.0 构建项目时出错

    我对这个项目有一个问题 我尝试在将 Android Studio 更新到 3 1 版本后构建它 我也将 gradle 更新到版本 3 1 0 只是 gradle Sync 工作正常 但尝试编译所有项目显示了这个错误 我已经将构建工具和所有库
  • ejabberd MUC 消息历史记录

    我使用 ejabberd XMPP 服务器作为聊天客户端 它还具有群聊功能 我的问题是 当新用户加入群组房间时 他只能收到来自该房间的前 20 条消息 尽管 History size 设置为 200 目前 在客户端 当新用户加入房间时 存在
  • Java 中“易失性”是什么意思?

    We use volatile在我们的一个项目中 维护由不同线程访问的变量的相同副本 我的问题是是否可以使用volatile with static 编译器没有给出任何错误 但我不明白使用两者的原因 如果没有阅读内存模型规范 我建议您阅读h