Junior — Middle
Como eliminar a condição de corrida ao trabalhar com threads com o mínimo de código?
sobes.tech IA
Resposta da IA
Para evitar condições de corrida ao trabalhar com threads no Android (Java/Kotlin), pode usar os seguintes meios mínimos de sincronização:
- Palavra-chave
synchronized— a forma mais simples de proteger uma secção crítica do código:
@Synchronized
fun increment() {
counter++
}
- Uso de variáveis atómicas do pacote
java.util.concurrent.atomic, comoAtomicInteger:
val counter = AtomicInteger(0)
counter.incrementAndGet()
- Uso de
Volatilepara variáveis, para garantir a visibilidade das mudanças entre threads (mas não protegerá contra condições de corrida na operação de incremento).
Assim, a forma mais mínima e frequentemente usada é envolver o acesso a dados partilhados num bloco synchronized ou usar tipos atómicos.