Sobes.tech
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.