Middle
Quais são outras formas de lidar com a condição de corrida de threads, além de usar a palavra-chave volatile?
sobes.tech IA
Resposta da IA
Mutexes (blocos ou funções sincronizadas, API Lock), variáveis atômicas (AtomicInteger, AtomicBoolean, etc.), semáforos, monitores, canais (para transferência de dados entre threads), e uso de estruturas de dados seguras para acesso paralelo (por exemplo, ConcurrentHashMap, CopyOnWriteArrayList).
// Exemplo com bloco synchronized
private final Object lock = new Object();
private int count = 0;
public void increment() {
synchronized (lock) {
count++;
}
}
// Exemplo com AtomicInteger
private final java.util.concurrent.atomic.AtomicInteger atomicCount = new java.util.concurrent.atomic.AtomicInteger(0);
public void incrementAtomic() {
atomicCount.incrementAndGet();
}