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.
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 this
para outras classes / objetos dentro do corpo do construtor.
Seu exemplo poderia fazer mais sentido com um synchronized static
método ou synchronized
em um static
campo.