Thursday, November 26, 2020

Вопросы на собеседовании Java: AtomicInteger vs volitile

Наверняка на собеседовании по многопоточности у вас спросят чем AtomicInteger отличается от volitile. Давайте более подробно раскрою тему.

AtomicInteger гарантирует чтение и атомарность при изменении значения множеством потоков, а volitile гарантирует чтение множеством потока, а изменение значение одним потоком.

Почему это так работает?

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

No comments:

Post a Comment