![]() |
1
7
它可以影响性能,但就是这样。 可能还有另一个危险:你诱使自己去思考,既然一切都是不稳定的,你的代码是线程安全的。事实并非如此,而且没有替代方法可以真正理解代码的线程含义。如果你这样做了,你就不需要把事情的不稳定性标记为“以防万一”。 但对于您的直接问题:不,您永远不会接受功能正确的代码,并通过使变量违反来破坏它。 |
![]() |
2
11
明显的影响是一些小的性能影响,因为编译器被禁止使用 certain optimizations .然而,更糟糕的影响是错误的安全感。仅仅因为一个变量是不稳定的,并不意味着用它所做的一切现在都是线程安全的,除非对它进行的所有操作都是原子操作(否则,在观察和该变量的突变之间可能会存在断开)。 仍然需要适当的同步块。你的方法天生就有缺陷。抱歉,但是获得线程安全性并不是那么简单。 第三个问题是它使代码的真正用途更加模糊。如果所有变量都标记为volatile,那么读者如何知道哪些变量真正依赖于该属性,哪些变量不依赖于该属性?这种默默无闻造成了代码维护负担中的隐藏成本,也称为技术债务。 |
![]() |
Fredericson · 如何避免在Java中使用volatile 7 年前 |
![]() |
razorozx · C++如何获取父数据类型的sizeof? 7 年前 |
|
JavaKaKida · 单核cpu java中的易失性 7 年前 |
![]() |
gstackoverflow · 顺序一致性挥发性解释 7 年前 |
![]() |
AlastairG · volatile关键字如何影响静态常量数组? 7 年前 |