Os objetos imutáveis são imunes a publicação inadequada?

É um exemplo deJCiP.

public class Unsafe {
    // Unsafe publication 
    public Holder holder;

    public void initialize() {
        holder = new Holder(42);
    }
}

public class Holder {
    private int n;

    public Holder(int n) {
        this.n = n;
    }
    public void assertSanity() {
        if (n != n) {
            throw new AssertionError("This statement is false.");
        }
    }
}

Na página 34:

[15] O problema aqui não é a própria classe Holder, mas o fato de o Holder não ser publicado corretamente. No entanto, o Holder pode ficar imune a publicação imprópria declarando o campo n como final, o que tornaria o Holder imutável;

E deesta resposta:

a especificação para final (consulte a resposta de @ andersoj) garante que, quando o construtor retornar, o campo final será inicializado corretamente (como visível em todos os threads).

Dewiki:

Por exemplo, em Java, se uma chamada para um construtor tiver sido incorporada, a variável compartilhada poderá ser atualizada imediatamente depois que o armazenamento for alocado, mas antes que o construtor incorporado inicialize o objeto

Minha pergunta é:

Porque: (pode estar errado, eu não sei.)

a) a variável compartilhada pode ser atualizada imediatamente antes que o construtor incorporado inicialize o objeto.

b) será garantido que o campo final seja inicializado corretamente (como visível em todos os threads) SOMENTE quando o construtor retornar.

É possível que outro encadeamento veja o valor padrão deholder.n? (ou seja, outro segmento obtém uma referência aholder antes de oholder retornos do construtor.)

Se sim, então como você explica a afirmação abaixo?

O Holder pode ficar imune a publicação imprópria declarando o campo n como final, o que tornaria o Holder imutável

EDITAR: Do JCiP. A definição de um objeto imutável:

Um objeto é imutável se:
x Seu estado não pode ser modificado após a construção;

x Todos os seus campos são finais; [12] e

x Está adequadamente construído (a referência não escapa durante a construção).

Então, por definição, objetos imutáveis não têm "this referência escapando "problemas. Certo?

Mas eles sofrerão comGravações fora de ordem no padrão de bloqueio com verificação dupla se não for declarado volátil?