Problemas com Singleton e Threads?

Ola Pessoal,

Estava eu lendo algumas coisas a respeito de singleton, e o autor disse que era melhor usar hoje IoC ao invés de singleton, primeiro ele disse que o singleton em sistemas distribuidos pode dar problema, e também quando se trabalha com Threads, porém ele não falou o “porque” do problema.

Alguem com mais experiência poderia explicar os problemas de singleton?

Obrigado desde já

Singletons em sistemas distribuídos podem dar problema porque se você usa singleton é porque você PRECISA que exista apenas uma instância da classe e em ambientes distribuídos você tem várias JVMs e, consequentemente, uma instância em cada uma dessas JVMs. O problema com threads é na hora da instanciação. Se você não tornar o getInstance() synchronized ou fizer a instanciação estática (mais recomendado, pois o synchronized é muito custoso) pode acontecer de duas threads instanciarem o singleton.