Atomic
это обёртка для основых классов из библиотеки java.util.concurrent для того чтобы не использовать ресурсоёмкий и плохооптимизируемый метод synchronized
т.е. это для того чтобы несколько потоков не могли одновременно изменять один ресурс параллельно, а только по очереди.
пример
https://gitlab.com/synergy9980417/razdel2/2_8
Atomic в Java - это классы, которые обеспечивают атомарные операции, то есть операции, которые выполняются как единое целое, без возможности прерывания или разделения.
Atomic используется для решения проблем синхронизации в многопоточных приложениях. Он позволяет избежать проблем с конкурентным доступом к общим ресурсам, обеспечивая безопасность и корректность работы программы.
Пример использования Atomic:
import java.util.concurrent.atomic.AtomicInteger;
public class Counter {
private AtomicInteger count = new AtomicInteger(0);
public void increment() {
count.incrementAndGet();
}
public int getCount() {
return count.get();
}
}
В этом примере, класс Counter имеет поле count типа AtomicInteger. Метод increment() увеличивает значение count на 1, используя метод incrementAndGet(), который является атомарной операцией. Метод getCount() возвращает текущее значение count.
Благодаря использованию AtomicInteger, мы можем быть уверены, что операции с count будут выполняться корректно, даже если несколько потоков будут одновременно обращаться к этому полю.