Pourquoi vous ne devez jamais utiliser synchronisé sur l'objet java en option

Mohammed Taleb Housseyn:

J'apprends sur Java wrapper en option, pour le faire, je suis à lire ce qui suit tutoriel

mais j'ai une question simple qui est sans réponse dans l'article: dans l' article 25: Évitez d' utiliser des opérations Identité-sensibles sur Optional ils sont à mentionner JAMAIS utiliser un objet en option d'une manière synchronisée comme ceci:

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

synchronized(product) {

    ...

}

mais il n'y a pas d'explication pourquoi, alors s'il vous plaît ne quelqu'un ici me expliquer pourquoi il en est une mauvaise pratique ???

Michael :

Car

[catégories fondées sur des valeurs] sont librement interchangeables lorsque égaux, ce qui signifie que interchangeant deux cas , x et y qui sont égales selon equals()l' une quelconque invocation de calcul ou méthode devrait produire aucun changement visible de comportement »

Source (Oracle)

Vous ne pouvez remplacer librement X et Y s'il y a un verrou intrinsèque sur l'un d'eux, car cela peut produire un changement de comportement.

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=226070&siteId=1
conseillé
Classement