Sobes.tech
Junior — Middle
147

Каким образом реализовать подсчет обработанных записей при использовании многопоточности?

Сұралған компаниялар
СБЕРСБЕР

AI-дан жауап

sobes.tech AI

При использовании многопоточности для подсчета обработанных записей важно обеспечить корректную синхронизацию доступа к счетчику, чтобы избежать условий гонки.

Один из простых способов — использовать потокобезопасные классы из пакета java.util.concurrent.atomic, например, AtomicInteger:

import java.util.concurrent.atomic.AtomicInteger;

public class RecordProcessor {
    private AtomicInteger processedCount = new AtomicInteger(0);

    public void processRecord(Record record) {
        // обработка записи
        // ...

        // безопасное увеличение счетчика
        processedCount.incrementAndGet();
    }

    public int getProcessedCount() {
        return processedCount.get();
    }
}

Если используется пул потоков, каждый поток вызывает processRecord, и счетчик будет корректно увеличиваться без блокировок.

Альтернативно можно использовать синхронизированные блоки или другие механизмы синхронизации, но AtomicInteger проще и эффективнее для таких задач.