AtomicInteger гарантирует чтение и атомарность при изменении значения множеством потоков, а volitile гарантирует чтение множеством потока, а изменение значение одним потоком.
Почему это так работает?
AtomicInteger реализует алгоритм CAS(compare and swap), т.е при работе с ячейкой памяти где хранится значение переменной происходит следующий алгоритм:
1. Прочитать значение
2. Сравнить с текущим
3. Если отличается перезаписать
No comments:
Post a Comment