Por que você nunca deve usar sincronizados on Opcional objeto java

Mohammed Housseyn Taleb:

Eu estou aprendendo sobre java invólucro opcional, para fazê-lo eu estou lendo o seguinte tutorial

no entanto eu tenho uma pergunta simples que não é respondida no artigo: no artigo 25: Evite o uso de Operações Identidade-sensíveis em Opcionais estão mencionando a NUNCA usar um objeto opcional de forma sincronizada assim:

Optional<Product> product = Optional.of(new Product());

synchronized(product) {

    ...

}

mas não há nenhuma explicação por que, por isso, que qualquer um aqui me explicar por que esta é uma prática ruim ???

Michael :

Porque

[classes baseadas em valor] são livremente substituíveis quando iguais, o que significa que permutando dois casos que x e y são iguais de acordo com equals()em qualquer computação ou método invocação devem produzir nenhuma mudança visível no comportamento"

Fonte (Oracle)

Você não pode substituir livremente X e Y se houver um bloqueio intrínseco em um deles, pois isso pode produzir uma mudança de comportamento.

Acho que você gosta

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