gpt4 book ai didi

java - 是什么让不可变对象(immutable对象)在没有安全发布技术的情况下发布?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:29:05 25 4
gpt4 key购买 nike

即使不求助于安全发布习语也可以发布不可变对象(immutable对象)是什么意思?

我已阅读 Java 并发实践(第 3 章,共享对象)但仍然无法理解以下语句:

Immutable objects can be published through any mechanism.

               V/S 

Effectively immutable objects should be safely published.

编辑:我经历了一个similar question on SO和答案,但仍然无法理解如何安全地发布不可变对象(immutable对象),因为引用不可变对象(immutable对象)的字段有可能被视为 null 或来自外部线程的早期调用的一些陈旧值。

最佳答案

并非每个用例都需要在任何精确时刻看到一个新实例。考虑教科书示例:延迟初始化的单例,在每个线程中重新初始化比安全共享更便宜。在这种情况下,您可能会不安全地共享一个不可变的实例,并且每个无法接收已经存在的副本的线程将只创建自己的副本。

至于术语:不安全发布 意味着它发生在数据竞争下。 安全出版 则相反。

顺便说一句,java.lang.String 是一个有效不可变对象的例子,但它仍然可以不安全地共享。

关于java - 是什么让不可变对象(immutable对象)在没有安全发布技术的情况下发布?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17000617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com