Sobes.tech
Back to questions
Junior — Middle
115

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

Companies where asked
СБЕРСБЕР

Answer from 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 проще и эффективнее для таких задач.