为什么你不应该在 Optional java 对象上使用 synchronized

Why you should never use synchronized on Optional java object

我正在学习 java 可选包装器,为此我正在阅读以下内容 tutorial

但是我有一个简单的问题没有在文章中得到解答:在 项目 25:避免对可选对象使用身份敏感操作 他们提到 永远不要 像这样以同步方式使用可选对象:

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

synchronized(product) {

    ...

}

但是没有解释为什么,所以请这里的任何人向我解释为什么这是一种不好的做法???

因为

[value-based classes] are freely substitutable when equal, meaning that interchanging any two instances x and y that are equal according to equals() in any computation or method invocation should produce no visible change in behavior"

Source(甲骨文)

如果 X 和 Y 其中之一存在内在锁定,则不能随意替换它们,因为这样做可能会导致行为发生变化。