Sobes.tech
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 предпочтительнее с точки зрения производительности и читаемости кода.