Junior — Middle
Quais métodos podem ser usados para prevenir condições de corrida em um ambiente multithread?
sobes.tech IA
Resposta da IA
Para evitar condições de corrida (race condition) em ambientes multithread, utilizam-se os seguintes métodos:
- Sincronização (synchronized) — bloqueio de secções críticas do código, para que apenas um thread possa executá-las de cada vez.
- Uso de classes de java.util.concurrent — por exemplo,
ReentrantLock,AtomicInteger,ConcurrentHashMap. - Evitar estado compartilhado — projetar estruturas de dados seguras para threads ou usar objetos imutáveis.
- Uso de volatile — para garantir a visibilidade das alterações nas variáveis entre threads.
Exemplo com synchronized:
public class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public synchronized int getCount() {
return count;
}
}
Aqui, os métodos increment e getCount estão sincronizados para evitar acessos simultâneos e condições de corrida.