我真的不能想到這個問題的一個偉大的標題,但問題是以下呼籲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
原子性不是關於防止上下文切換。這是關於確保任何線程總是看到一致的,正確的狀態,儘管上下文切換。 –