В Java атомарность означает неразрывность операции, выполняемой над данными. Это гарантия того, что операция будет либо выполнена целиком, либо не выполнена вовсе, не оставляя данные в промежуточном, некорректном состоянии. В контексте многопоточности, атомарные операции гарантируют, что при одновременном доступе нескольких потоков к одним и тем же данным, операции с этими данными не будут прерваны другими потоками.
Классы из пакета java.util.concurrent.atomic предоставляют атомарные операции для примитивных типов и ссылок, например:
AtomicInteger: для операций с целыми числами.AtomicLong: для операций с длинными целыми числами.AtomicBoolean: для операций с булевыми значениями.AtomicReference: для операций со ссылками на объекты.Применение этих классов обеспечивает потокобезопасность без явных блокировок (мьютексов), что часто приводит к более высокой производительности в высоконагруженных системах.
Пример использования AtomicInteger:
java
В отличие от неатомарных операций (например, counter++ без синхронизации), атомарные операции гарантируют, что даже при одновременном вызове incrementAndGet() из нескольких потоков, final значение счетчика будет корректным.