【发布时间】:2020-05-06 06:21:01
【问题描述】:
我读过一些帖子和文章说我们不应该将 java 对象声明为 volatile,因为结果,只有引用变为 volatile。以下是一些示例:
Sonar 的建议是“非原始字段不应该是“易失性的””,但是,它也表明所描述的问题是指可变对象“同样,将可变对象字段标记为 volatile 意味着对象引用是易失性的,但对象本身不是'。
我的问题是:将 java String 声明为 volatile 是否安全?
【问题讨论】:
-
您的标题含糊不清。重写以总结您的具体技术问题。
-
不太清楚你所说的“安全”是什么意思。 volatile 关键字完全按照它为所有类型的字段指定的操作,无论它们是否指向对象。例如,它不会爆炸。而且因为 String 实例是不可变的,所以它们本身不会因被多个线程使用而发生故障,无论您对它们做什么或是否使用 volatile 字段来执行它。但这并不意味着 volatile 所做的事情足以 让应用程序按照您的意愿运行。随处添加 volatile 不会神奇地使应用程序线程安全。
-
很抱歉。这个标题是由版主设置的,不是我。
标签: java string immutability volatile