Podemos chamar o método de um objeto sincronizado dentro do construtor do objeto em Java?

Principal :

Eu sou novo para Java. Eu estou querendo saber se é possível chamar um método sincronizado dentro construtor. Há o exemplo:

class a{
    int a1;

    public a(){
        a1 = 1;
        increment();
    }

    private synchronized void increment(){
        a1++;
    }
}

É um exemplo brinquedo. Posso apenas definir o a1 a 2 no construtor. Eu apenas estou confuso se podemos chamar increment()dentro do construtor ou não.

davidxxx:

Você pode fazer isso, mas que a sincronização não tem sentido porque o método sincronizado irá bloquear a instância que está sendo criado. Mas que outra thread pode acessá-lo, enquanto que não tenha ainda ser criado e retornado? Ninguém.
Construtores estão de fato defacto o segmento de seguros, desde que você siga as boas práticas, como não passar thispara outras classes / objetos dentro do corpo do construtor.
Seu exemplo poderia fazer mais sentido com um synchronized staticmétodo ou synchronizedem um staticcampo.

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=185139&siteId=1
Recomendado
Clasificación