我真的不能想到这个问题的一个伟大的标题,但问题是以下呼吁Atomic.set
在Foo
构造函数是原子,或者可能在调用之前线程切换到AtomicInteger.set
?Java是调用原子方法原子
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);
}
}
}
如果线程在调用“AtomicInteger.set”之前切换,会出现什么问题? –
@LouisWasserman我实际上并没有那么远;只是好奇... – Eliezer
原子性不是关于防止上下文切换。这是关于确保任何线程总是看到一致的,正确的状态,尽管上下文切换。 –