Back to questions
СБЕР Корпус
Junior — Middle
60
Как реализовать безопасное увеличение счётчика операций в многопоточной среде?
Companies where asked
Answer from AI
sobes.tech AI
В Java для безопасного увеличения счётчика в многопоточной среде можно использовать класс AtomicInteger из пакета java.util.concurrent.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();
}
}
Если по каким-то причинам нельзя использовать AtomicInteger, можно использовать ключевое слово synchronized для синхронизации метода или блока, чтобы избежать состояния гонки:
public class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public synchronized int getCount() {
return count;
}
}
Использование AtomicInteger предпочтительнее с точки зрения производительности и читаемости кода.