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