Sobes.tech
Junior — Middle
103

Come implementare un incremento sicuro del contatore delle operazioni in un ambiente multithread?

Le aziende dove è stato chiesto
СБЕР КорпусСБЕР Корпус

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