Junior — Middle
Comment implémenter le comptage des enregistrements traités lors de l'utilisation du multithreading?
sobes.tech IA
Réponse de l'IA
При использовании многопоточности для подсчета обработанных записей важно обеспечить корректную синхронизацию доступа к счетчику, чтобы избежать условий гонки.
Один из простых способов — использовать потокобезопасные классы из пакета 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 проще и эффективнее для таких задач.