Sobes.tech
Junior — Middle
113

Ինչպես իրականացնել անվտանգության բարձրացում գործողությունների հաշվիչում բազմապատկման միջավայրում?

Ընկերությունները, որտեղ հարցրել են
СБЕР КорпусСБЕР Корпус

Պատասխան 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 предпочтительнее с точки зрения производительности и читаемости кода.