Назад к вопросам
СБЕР
Junior — Middle
108
Каким образом реализовать подсчет обработанных записей при использовании многопоточности?
Компании, где спрашивали
Ответ от нейросети
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 проще и эффективнее для таких задач.