volatile i. , , , , .
getAndIncrement() get() synchronized, , i, , . synchronized i volatile, .
, AtomicInteger , volatile int. AtomicInteger getAndIncrement() synchronized, , .
public final AtomicInteger i = new AtomicInteger();
...
public int get() {
return i.get();
}
public int getAndIncrement() {
return i.getAndIncrement();
}
, , , 1 0 1, 2 0, 1, , , .
get() synchronized, , i. synchronized . synchronized , i++. AtomicInteger .
, synchronized, , , volatile. synchronized, , volatile. synchronized , , , .