我应该使用同步方法来改变该字段吗?

2023-12-04

随着接下来的课程,

// This class should be thread-safe!!!
class BankAccount {

    private long balance; // Should it be volatile?

    synchronized void deposit(long amount) {
        // ...
        balance += amount;
    }

    synchronized void withdraw(long amount) {
        // ...
        balance -= amount;
    }
}

我应该添加volatile to balance field?


不,与synchronized关键词,volatile重量轻。

volatile可以保证读者话题始终保持新鲜感balance值,但不能使balance += amount;原子。synchronized可以两者兼得。

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

我应该使用同步方法来改变该字段吗? 的相关文章

随机推荐

  • 寻找最小的下一个更大的元素

    我有一项任务 要求我为所有数组条目找到数组中所有较大元素中的最小元素 并将相应的索引存储在数组中 但我无法完全弄清楚解决方案的最后部分 这与这里解释的问题有点相似 https www geeksforgeeks org smallest g
  • Alsa无法设置样本格式[FFMPEG]

    我正在尝试使用 ffmpeg 从 Roland USB 设备捕获 pcm 流并用 wav 包装它 我正在使用的命令行如下 ffmpeg f alsa acodec pcm s32le ac 2 ar 48000 i hw 2 0 out w
  • SqlDataReader“枚举未产生结果”

    一直想弄清楚 但我不能 我通过 SqlCommand 执行存储过程 返回的 SqlDatareader 对象没有给我结果 但是 如果在调试器中探索该对象 我可以看到它们 这是我正在谈论的内容的图片 在结果视图行中显示 枚举没有结果 但是在路
  • d3.js 选择器不返回实际对象

    我正在使用 d3 js v4 我已在 google chrome 浏览器的控制台上执行了以下代码 var theData 1 2 3 var p d3 select body selectAll p data theData enter a
  • 查询以水平显示输出

    我需要以水平方式显示查询输出 我有一些示例数据 create table TestTable id number name varchar2 10 insert into TestTable values 1 John insert int
  • 包括来自 FXML 的 FontAwesomeFX 图标和字形

    Sector 1 最棒的字体真棒FX 提到JFXBadge是来自JFoenix图书馆 我找到了从下载他们的演示的代码github 回到旧时光FontAwesomeFX 8 5 0
  • 如果出现 SMTP 421 错误该怎么办?

    我有一些 PHP 代码可以帮助发送电子邮件 它的工作方式是有一个唯一密钥的列表 每个密钥都必须发送到不同的电子邮件地址 有时我们需要能够一次发送 1000 个这样的密钥 因此需要发送 1000 封电子邮件 我正在使用 Pear Mail S
  • 从已运行的 CMD 窗口捕获文本 (VB.NET)

    有一个应用程序几乎 24 7 在此计算机上运行 它在命令提示符窗口内运行 我希望能够捕获窗口中当前显示的所有文本 该应用程序已经在运行 并且由于不相关的原因 无法从 VB 内启动 因此我不能仅重定向进程的输出来保存文本 我当前捕获文本的方法
  • 数据包数据拦截和修改

    我希望能够在 tcp 客户端一侧拦截 修改 tcp 流中的数据 pcap 的示例展示了如何解析 tcp 数据包标头 有效负载 但是假设 我想在 tcp 客户端读取数据包有效负载之前修改它 或者完全丢弃数据包 我该如何使用 pcap capu
  • 为什么即使我调用 CommandManager.InvalidateRequerySuggested(),也不会调用 WPF 按钮命令的 CanExecute 方法?

    我面临着这些问题中报告的相同问题 属性更改时不调用按钮命令 CanExecute 如何强制更改文本框以在 WPF 中启用我的命令 简单来说就是 我的命令链接按钮在应该启用时没有启用 但略有不同 我已经尝试调用 CommandManager
  • 使用泽勒同余确定一周中的哪一天

    我尝试编写代码来查找给定日期的星期几泽勒同余但我没有得到正确的输出 我的代码有什么问题吗 include
  • 使用 Google Analytics 跟踪客户端 JavaScript 和服务器端跟踪调用中的同一会话?

    我们正在我们的网站中实施第三方支付系统 巴克莱 CPI 我们希望使用 Google Analytics 来跟踪付费客户的来源 例如 然而 巴克莱 CPI 通过服务器到服务器的 http 请求返回支付授权结果 而不是带有谷歌分析代码的普通网页
  • Android 设备可以广播 SSID 吗?

    我想查看来自 Android 设备上的 Nintendo 3DS 的数据 3DS 将自动尝试连接到 SSID 为 Nintendo 3DS continuous scan 000 的任何路由器 我知道这应该是可能的 因为网络共享应用程序基本
  • 调整输入图像大小以上传

    我已经为这个问题苦苦挣扎了几个小时 我想调整输入标签中的图像大小 然后将其上传到服务器 这是我的尝试 我的输入元素
  • 如何调出内置的文件复制对话框?

    我将使用我的 winforms 应用程序通过网络复制一个大文件 并且我需要显示某种进度条 我没有编写自己的复制例程 而是认为简单地显示内置文件复制对话框可能会更好 我还需要 复制完成 和 复制失败 通知 我需要它在 Windows XP V
  • 如何只打印选定的 HTML 元素?

    我正在尝试用 HTML 实现打印功能 我知道我可以打印整页window print 但是如何只打印特定的页面元素呢 例如一个特定的 div Some text to print div 您可以使用打印特定的 CSS 样式表并隐藏除您想要打印
  • 如何在向导窗口的左下角添加图像横幅?

    如何将图像添加到设置向导的左下角 正如 TLama 评论的那样 创建一个TBitmapImage 将其父级设置为WizardForm 将其放置在您想要的位置并从文件加载图片 Files Source logo bmp Flags dontc
  • R——按组将日期范围扩展为面板数据

    我的日期范围由两个变量分组 id and type 当前存储在名为的数据框中data 我的目标是扩大日期范围 以便我在日期范围内的每一天都有一行 其中包括相同的id and type 以下是重现数据框示例的片段 data lt struct
  • 如何参数化azure逻辑应用标准项目的workflow.json和connections.json文件中的值

    我已经使用 Visual Studio 代码创建了 azure 逻辑应用程序单租户项目 如下所示this文档 然后根据我的要求创建工作流程 其中包含数据工厂管道和发送网格操作 工作流包含创建管道运行数据工厂操作中的硬编码值 Create a
  • 我应该使用同步方法来改变该字段吗?

    随着接下来的课程 This class should be thread safe class BankAccount private long balance Should it be volatile synchronized void