0%

AtomicInteger

并发包下,多线程下依旧保证原子。

1
2
3
4
5
6
7
8
9
10
11
public class AtomicInteger extends Number implements java.io.Serializable {
private static final long serialVersionUID = 6214790243416807050L;

/*
* This class intended to be implemented using VarHandles, but there
* are unresolved cyclic startup dependencies.
*/
private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long VALUE = U.objectFieldOffset(AtomicInteger.class, "value");

private volatile int value;

volatile 修饰,保证 value 是可见的,当某个线程修改 value 值时,对其他线程可见,其他线程访问时就不会通过缓存去取,而是到内存中取,保证 value 的一致性。