¿Por qué usted nunca debe usar sincronizada en Opcional objeto Java

Mohammed Taleb Housseyn:

Yo estoy aprendiendo sobre Java envoltorio opcional, para hacer así que estoy leyendo el siguiente tutorial

sin embargo tengo una simple pregunta que no está respondida en el artículo: en el artículo 25: Evitar el uso de Operaciones de identidad con sensibilidad en Opcionales están mencionar a NUNCA usar un objeto opcional de una manera sincronizada como esto:

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

synchronized(product) {

    ...

}

pero no hay ninguna explicación de por qué, así que por favor sería cualquiera aquí que me explique por qué esto es una mala práctica ???

Miguel :

Porque

[clases basadas en el valor] son libremente sustituibles cuando son iguales, lo que significa que intercambiando dos casos x e y que son iguales de acuerdo con equals()en cualquier cálculo o invocación de método debe producir ningún cambio visible en el comportamiento"

Fuente (Oracle)

No se puede sustituir libremente X e Y si hay un bloqueo intrínseco en uno de ellos, ya que al hacerlo puede producir un cambio en el comportamiento.

Supongo que te gusta

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