Objetos Imutáveis, qual a vantagem?

[quote]JoseIgnacio wrote:
Em algum momento, algum estado terá que ser modificado, ou seu programa não faz nada. [/quote]

Eu não disse que objetos imutáveis devem ser utilizados sempre em programação concorrente, por isso escrevi “quando possível” entre parênteses…

[quote]JoseIgnacio wrote:
Objetos imutáveis são um primeiro passo, mas tem pouco a ver com tornar programação concorrente possível. [/quote]

Também não quis dizer que os objetos concorrentes é que tornam a programação concorrente possível…

O que falei foi que é possível utilizar eles em alguns casos ao invés de sincronizar o acesso ao estado do objeto. No livro sobre concorrência do Brian Goetz e em vários artigos na web existem explicações sobre quando utilizar isso e porque.

Tem um resumo sobre isso aqui:

http://weblogs.java.net/blog/caroljmcdonald/archive/2009/09/17/some-java-concurrency-tips

e um artigo mais detalhado sobre o assunto aqui:

http://www.ibm.com/developerworks/java/library/j-jtp02183/index.html