Double Checked Locking

Impressionante isso aqui:

http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html

Eh um problema que pode acontecer inumeras vezes.

Se voce tem um singleton, e no getInstance() voce ve se ele eh null, instancia ele, voce pode isntancias duas vezes o singleton, e ficar soh com a referencia do ultimo. E eu nunca sincronizava os getInstances dos meus singletons. alias, nunca vi ninguem sincronizar.

Sincronizando resolve, porem gasta muito tempo para pegar o lock. Ele tenta resolver soh sincronizando a parte da instanciacao, mas mostra direitinho que tambem nao funciona, voce pode ter serios problemas de concorrencia, ja que a isntancia pode estar no MEIO da chamada ao construtor…

incrivel nao?

Interessante, muito interessante… em especial, a parte

“After understanding those, you may be tempted to try to devise a way to “fix” the double-checked locking idiom. Your fixes will not work:”

Mata a pau :slight_smile:

Rafael