Junior — Middle
Tem experiência a trabalhar com situações em que os dados no sistema se revelaram inconsistentes em condições de acesso simultâneo de vários utilizadores?
sobes.tech IA
Resposta da IA
Sim, em condições de acesso simultâneo de vários utilizadores, surgem frequentemente problemas de inconsistência de dados. Por exemplo, se dois utilizadores tentarem atualizar ao mesmo tempo o mesmo registo na base de dados, sem uma sincronização adequada, pode ocorrer perda de dados ou conflito.
Para resolver essas situações em Java, aplicam-se:
- Mecanismos de bloqueio (synchronized, ReentrantLock) para controlar o acesso a recursos partilhados.
- Transações com níveis de isolamento que garantem a coerência dos dados.
- Estratégias de bloqueio otimista e pessimista.
Exemplo de uso de synchronized para proteger um recurso comum:
public class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public synchronized int getCount() {
return count;
}
}
Esta abordagem impede alterações simultâneas na variável count por múltiplos threads, mantendo a coerência dos dados.