Junior — Middle
Como implementar a contagem de registos processados ao usar multithreading?
sobes.tech IA
Resposta da IA
Ao usar multithreading para contar os registros processados, é importante garantir uma sincronização correta do acesso ao contador para evitar condições de corrida.
Uma das formas mais simples é usar classes thread-safe do pacote java.util.concurrent.atomic, por exemplo, AtomicInteger:
import java.util.concurrent.atomic.AtomicInteger;
public class RecordProcessor {
private AtomicInteger processedCount = new AtomicInteger(0);
public void processRecord(Record record) {
// processamento do registo
// ...
// incremento seguro do contador
processedCount.incrementAndGet();
}
public int getProcessedCount() {
return processedCount.get();
}
}
Se for usado um pool de threads, cada thread chama processRecord, e o contador será corretamente incrementado sem bloqueios.
Alternativamente, pode-se usar blocos sincronizados ou outros mecanismos de sincronização, mas AtomicInteger é mais simples e eficiente para tais tarefas.