Pessoal, boa tarde.
Dou manutenção em um sistema Web e me deparei com o seguinte problema.
Tem alguns métodos que são chamados em varias partes do sistema, e pode ter vários usuários fazendo a suas atividades no sistema e este por sua vez busca informações em banco, faz cálculos, muda status dos registros e assim por diante, isso causava erros pois uma rotina não havia sido finalizada e outra já era iniciada, e por aí vai, fizemos uma sincronização desses métodos comuns, mas tivemos uma lentidão no sistema (era esperado isso). Acredito que outros já tenham passado por esse problema. Como resolver? É somente sincronizando os métodos mesmo?
Aguardo dicas.
Obrigado.
Se voce sincrtonizar um metodo, o acesso vai ser sincronizado, não ha o que fazer, vai perder performance
mas talvez nao seja necessario deixar os metodos sincronizados analise os erros que acontecem.
boa sorte
A sincronização possui um custo como você citou, porém dependendo da transação poderia isolar apenas o que é fundamental em sincronizar, por exemplo o saldo de uma conta, em casos extremos de desempenho, esse campo pode ser tratado como uma tabela a parte, e tratado numa transação que garanta apenas a atualização dele em ambiente sincronizado, garantido velocidade maior do que um método com vários outros elementos envolvidos, mas independentes de sincronização.