Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Singleton

Tenho a seguinte dúvida:

Caso eu tenha a necessidade de ter somente única instância, mas meu sistema seja crítico, por exemplo, muita concorrência e uso de threadings, como eu garanto que não tenha Deadlocks ou processos que ficaram em Starvation?

Existe alguma boa prática para isso?

1 resposta
solução!

Oi Rodney, pode contar um pouco mais de que tipo de instância vc ta falando? Se não for uma instância que aponta para um recurso externo, minha sugestão é não usar o singleton. Cada vez que alguém chamar o método, retorne uma cópia da original :). A JVM sabe lidar com objetos de vida curta e isso tende a não ser problema para vc.

Caso queira realmente ter um singleton, mas o seu objeto é apenas de leitura, não tem problema também o acesso simultaneo...

Caso ele tenha alteração e vc optou por não usar imutabilidade, você pode marcar ele como sincronizado.. Se vc não tem uma relação entre dois objetos sincronizados, não vai cair em deadlock.

Por fim, caso precise de uma estratégia super avançada de lock, vc pode olhar as implementações da interface java.util.concurrent.Lock, que possibilita mais possibilidades de locks em relação a que vc tem com o synchronized.