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

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(使用前将#替换为@)

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

  • java.lang.ClassNotFoundException:javax.mail.MessagingException

    我想使用 eclipse 将电子邮件从我的 gmail 帐户发送到另一个邮件帐户 我使用 apache tomcat 7 0 34 作为我的 Web 服务器 并使用端口 8080 作为 apache 服务器 HTTP 1 1 并使用 JRE
  • 如何在 JPQL 或 HQL 中进行限制查询?

    在 Hibernate 3 中 有没有办法在 HQL 中执行相当于以下 MySQL 限制的操作 select from a table order by a table column desc limit 0 20 如果可能的话 我不想使用
  • Android studio - 如何保存先前活动中选择的数据

    这是我的代码片段 这Textview充当按钮并具有Onclicklistner在他们 当cpu1000时Textview单击它会导致cpu g1000其代码如下所示的类 public class Game 1000 extends AppC
  • 如何在单个查询中搜索 RealmObject 的 RealmList 字段

    假设我有一堂课 public class Company extends RealmObject private String companyId private RealmList
  • 如何检查某个元素是否存在于一组项目中?

    In an ifJava中的语句如何检查一个对象是否存在于一组项目中 例如 在这种情况下 我需要验证水果是苹果 橙子还是香蕉 if fruitname in APPLE ORANGES GRAPES Do something 这是一件非常微
  • Java 中如何将 char 转换为 int? [复制]

    这个问题在这里已经有答案了 我是Java编程新手 我有例如 char x 9 我需要得到撇号中的数字 即数字 9 本身 我尝试执行以下操作 char x 9 int y int x 但没有成功 那么我应该怎么做才能得到撇号中的数字呢 ASC
  • 将非 Android 项目添加到 Android 项目

    我在 Eclipse 中有三个项目 Base Server 和 AndroidClient Base和Server是Java 1 7项目 而AndroidClient显然是一个android项目 基础项目具有在服务器和 Android 客户
  • Android 无法解析日期异常

    当尝试解析发送到我的 Android 客户端的日期字符串时 我得到一个无法解析的日期 这是例外 java text ParseException 无法解析的日期 2018 09 18T00 00 00Z 位于 偏移量 19 在 java t
  • Sun 在 EDT 之外做 GUI 工作的演示?

    我正在看SplashDemo java http download oracle com javase tutorial uiswing examples misc SplashDemoProject src misc SplashDemo
  • 如何仅从 Firestore 获取最新更新的数据?

    在 Firestore 上发现任何更改时始终获取整个文档 如何只获取最近更新的数据 这是我的数据 我需要在第一次加载时在聊天中按对象顺序 例如 2018 09 17 30 40 msg和sendby 并且如果数据更新则仅获取新的msg和se
  • Java Applet 中的 Apache FOP - 未找到数据的 ImagePreloader

    我正在研究成熟商业产品中的一个问题 简而言之 我们使用 Apache POI 库的一部分来读取 Word DOC 或 DOCX 文件 并将其转换为 XSL FO 以便我们可以进行标记替换 然后 我们使用嵌入到 Java 程序中的 FOP 将
  • Akka 与现有 java 项目集成的示例

    如果我已经有现有的javaWeb 应用程序使用spring and servlet容器 将 Akka 集成到其中的正确方法是什么 就像我将会有Actor1 and Actor2互相沟通的 开始使用这些演员的切入点是什么 例如 1 把它放在那
  • 在Java中运行bat文件并等待

    您可能会认为从 Java 启动 bat 文件是一项简单的任务 但事实并非如此 我有一个 bat 文件 它对从文本文件读取的值循环执行一些 sql 命令 它或多或少是这样的 FOR F x in CD listOfThings txt do
  • 在 Java 中获取并存储子进程的输出

    我正在做一些需要我开始子处理 命令提示符 并在其上执行一些命令的事情 我需要从子进程获取输出并将其存储在文件或字符串中 这是我到目前为止所做的 但它不起作用 public static void main String args try R
  • 为什么\0在java中不同系统中打印不同的输出

    下面的代码在不同的系统中打印不同的输出 String s hello vsrd replace 0 System out println s 当我在我的系统中尝试时 Linux Ubuntu Netbeans 7 1 它打印 When I
  • 在 Spring 上下文中查找方法级自定义注释

    我想知道的是 所有的类 方法Spring http en wikipedia org wiki Spring Framework注释为 Versioned的bean 我创建了自定义注释 Target ElementType METHOD E
  • 手动设置Android Studio的JDK路径

    如何为 Android Studio 使用自定义 JDK 路径 我不想弄乱 PATH 因为我没有管理员权限 是否有某个配置设置文件允许我进行设置 如果您查看项目设置 您可以从那里访问 jdk 在标准 Windows 键盘映射上 您可以在项目
  • Android View Canvas onDraw 未执行

    我目前正在开发一个自定义视图 它在画布上绘制一些图块 这些图块是从多个文件加载的 并将在需要时加载 它们将由 AsyncTask 加载 如果它们已经加载 它们只会被绘制在画布上 这工作正常 如果加载了这些图片 AsyncTask 就会触发v
  • 由 Servlet 容器提供服务的 WebSocket

    上周我研究了 WebSockets 并对如何使用 Java Servlet API 实现服务器端进行了一些思考 我没有花费太多时间 但在使用 Tomcat 进行一些测试时遇到了以下问题 如果不修补容器或至少对 HttpServletResp
  • java'assert'和'if(){}else exit;'之间的区别

    java和java有什么区别assert and if else exit 我可以用吗if else exit代替assert 也许有点谷歌 您应该记住的主要事情是 if else 语句应该用于程序流程控制 而assert 关键字应该仅用于

随机推荐

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

    我有一项任务 要求我为所有数组条目找到数组中所有较大元素中的最小元素 并将相应的索引存储在数组中 但我无法完全弄清楚解决方案的最后部分 这与这里解释的问题有点相似 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