Junior — Middle
Kā īstenot apstrādāto ierakstu skaita, izmantojot daudzprocesu?
sobes.tech AI
Atbilde no 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 проще и эффективнее для таких задач.