Back to questions
СБЕР
Junior — Middle
73
Какие методы и инструменты вы бы применили для создания потокобезопасного счетчика?
Companies where asked
Answer from AI
sobes.tech AI
Для создания потокобезопасного счетчика в Java можно использовать несколько подходов:
- Класс AtomicInteger из пакета
java.util.concurrent.atomic. Он предоставляет атомарные операции, такие какincrementAndGet(), которые гарантируют корректное обновление значения счетчика в многопоточной среде без необходимости явной синхронизации.
import java.util.concurrent.atomic.AtomicInteger;
public class SafeCounter {
private AtomicInteger counter = new AtomicInteger(0);
public int increment() {
return counter.incrementAndGet();
}
public int get() {
return counter.get();
}
}
- Синхронизация с помощью ключевого слова
synchronized. Можно сделать методы инкремента и получения значения синхронизированными, чтобы обеспечить эксклюзивный доступ:
public class SafeCounter {
private int counter = 0;
public synchronized int increment() {
return ++counter;
}
public synchronized int get() {
return counter;
}
}
- Использование
LongAdder— более эффективен при высокой конкуренции потоков, так как снижает блокировки.
Выбор зависит от конкретных требований: для простоты и хорошей производительности обычно достаточно AtomicInteger.