我已经阅读了一些文章和文章,说我们不应该将Java对象声明为volatile,因为结果是,只有引用才变成volatile。这里有一些例子:
Sonar建议'非原始字段不应该是“易失的””,但是,它也表明所描述的问题涉及可变对象'类似地,将可变对象字段标记为volatile意味着对象引用是可变的,但是对象本身不是'。
我的问题是:将Java String声明为volatile是否安全?
因为String
对象是不可变的,所以只有引用由=
和+=
之类的运算符修改。因此,挥发物对String
是安全的,因为它适用于参考本身。这也适用于其他不可变对象,就像适用于基元一样。
Java字符串是最终类,线程安全。不需要这样做。