Junior — Middle
140
Koje metode i alate biste koristili za kreiranje sigurnog brojača za niti?
Компаније где су питане
Одговор од АИ
sobes.tech АИ
Для создания потокобезопасного счетчика в 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.