为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

尚方宝剑之说 2023-03-17 15:43:52
我正在学习 java 可选包装器,为此我正在阅读以下教程然而,我有一个简单的问题没有在文章中得到解答:在第 25 项:避免对可选对象使用身份敏感操作,他们提到永远不要像这样以同步方式使用可选对象:Optional<Product> product = Optional.of(new Product());synchronized(product) {    ...}但是没有解释为什么,所以请这里的任何人向我解释为什么这是一种不好的做法???
查看完整描述

1 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

因为

[基于值的类] 在相等时可以自由替换,这意味着在任何计算或方法调用中交换任何两个相等的实例 x 和 y equals()应该不会产生明显的行为变化”

来源(甲骨文)

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


查看完整回答
反对 回复 2023-03-17
  • 1 回答
  • 0 关注
  • 73 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信