为什么你不应该在 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 其中之一存在内在锁定,则不能随意替换它们,因为这样做可能会导致行为发生变化。
我正在学习 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 其中之一存在内在锁定,则不能随意替换它们,因为这样做可能会导致行为发生变化。