gpt4 book ai didi

java - 我应该用同步方法改变字段吗?

转载 作者:行者123 更新时间:2023-12-01 01:01:44 24 4
gpt4 key购买 nike

随着下课,

// 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 添加到 balance 字段?

最佳答案

不,与synchronized关键字相比,volatile是轻量级的。

volatile可以保证读取线程总是得到新鲜的balance值,但是它不能使balance += amount;原子化。 synchronized 可以做到这两点。

关于java - 我应该用同步方法改变字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51354104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com