gpt4 book ai didi

java - 原子到底是什么?

转载 作者:行者123 更新时间:2023-12-02 03:35:25 24 4
gpt4 key购买 nike

什么是原子?因为我必须选择某种语言来更清楚地表达我的问题,所以我会选择 Java。我知道原子意味着做所有事情或者只是回滚/什么也不做。所以说我有以下内容

public class Myclass {

private boolean progress;

public void setProgress(boolean progress) {
this.progress = progress;
}

public boolean getProgress() {
return progress;
}

}

现在以下哪些是线程安全的或原子的或两者兼而有之?请将每个新行视为一段单独的代码

     -------------------
getProgress(); //
------------------

----------------------
setProgress(true); //
----------------------

-------------------
getProgress()
setProgress();
-------------------

--------------------
setProgress();
getProgress();
--------------------

以下哪种情况对于在 java 中使用 AtomicReference 有意义?

最佳答案

从此:

What operations in Java are considered atomic?

我想说它们都不是原子的,因为函数调用不是原子操作。但是一旦你进入一个函数,分配一个 boolean 值是原子的(只是那一行),返回它则不是。

对于线程安全,请看一下:

Are java getters thread-safe?

基本上,“progress”的旧值可能缓存在 cpu 内部,因此即使为它分配一个新值是原子的(只是再次 = 行)而没有同步分配(AtomicBoolean 或同步 getter/setter),它也是线程安全的但是,可能会出现内存一致性错误,因此您可能需要将该变量声明为 volatile,以便其他线程可以看到最新的值。

关于java - 原子到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37502847/

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