gpt4 book ai didi

Java 是对原子方法的调用 Atomic

转载 作者:行者123 更新时间:2023-11-29 03:01:14 24 4
gpt4 key购买 nike

我真的想不出这个问题的好标题,但问题是下面对 Foo 构造函数中的 Atomic.set 的调用是否是原子的,或者线程可以在调用 AtomicInteger.set 之前切换吗?

public class Foo {
private final Atomic atomic = new Atomic();

public Foo() {
atomic.set(10);
}

private static class Atomic {
private final AtomicInteger atomicInt = new AtomicInteger();

public void set(int i) {
atomicInt.set(i);
}
}
}

最佳答案

在 Java 语言规范或 Java 虚拟机规范中没有保证在方法本身的调用和方法内部的 atomic.set() 调用之间没有其他线程在运行。

这完全取决于 JVM、您的硬件等。如果您有多个 CPU,其他 CPU 甚至不知道一个 CPU 在代码中的位置,除非您使用 Java 中的线程同步功能。 (你没有这样做,至少在你的方法开始之间没有添加 atomic.set 的调用)

剩下的问题是“你为什么关心?”但以上是您提出的问题的答案。

关于Java 是对原子方法的调用 Atomic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34783466/

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