为什么你永远不应该在可选的 java 对象上使用 synchronized

我正在学习 java 可选包装器,为此我正在阅读以下教程

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


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


synchronized(product) {


    ...


}

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


尚方宝剑之说
浏览 74回答 1
1回答

牛魔王的故事

因为[基于值的类] 在相等时可以自由替换,这意味着在任何计算或方法调用中交换任何两个相等的实例 x 和 y&nbsp;equals()应该不会产生明显的行为变化”来源(甲骨文)如果 X 和 Y 其中之一存在内在锁定,则不能随意替换它们,因为这样做可能会导致行为发生变化。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java