【问题标题】:Java: calling super.clone() method, volatile int value not copied in cloned objectJava:调用 super.clone() 方法,volatile int 值未复制到克隆对象中
【发布时间】:2015-07-04 10:22:11
【问题描述】:

我遇到了一个生产错误(至少在过去 1 年中只发生过一次)。经过调查,我可以得出结论 super.clone() 方法无法将“volatile int”值复制到新的克隆对象

有人遇到过这个问题吗?

clone() 方法在 jdk 库中被广泛使用,这是 clone 方法保证的基本内容。这会发生吗?

【问题讨论】:

    标签: java copy int clone volatile


    【解决方案1】:

    克隆易失性数据是不安全的。请参阅此post 了解克隆的副作用。

    【讨论】:

    • 提供的“帖子”中的示例并未说明 volatile 的问题。克隆时,会复制对象的引用并复制原始值。在给出的示例中,克隆对象指向同一个 Date 对象,但 int 值在本地复制。我看不出有什么问题。
    猜你喜欢
    • 1970-01-01
    • 2013-04-06
    • 2011-10-17
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多