易失性变量读写

时间:2018-03-21 20:51:21

标签: java multithreading volatile

如果我们有volatile变量,我们保证如果我们有两个线程并且两个线程读取它们将从主内存中获取值,如果我们写入然后读取发生,我们将在读取中获取更改,但是当我们在volatile变量上读取和写入许多线程时,有什么保证并且不能保证?

1 个答案:

答案 0 :(得分:0)

NO。 volatile不会这样做。

Volatile: Almost Useless for Multi-Threaded Programming

  

关键字volatile有一个广泛的概念   多线程编程。我已经看到了与volatile的接口   限定词称为“它可能用于多线程   编程“。我认为直到最近几周才有用   终于明白我(或者如果你愿意的话,穿过我的厚脸)   volatile对多线程编程几乎没用。生病   在这里解释为什么你应该从多线程中擦除大部分内容   代码。

     

...

可能会有语言可能产生这样的影响,但在C语言中,答案是肯定的。

编辑:

现在语言被指定为Java,答案是不同的,因为Java实现了自己的内存模型,而volatile关键字确实会产生重大影响。请参阅Do you ever use the volatile keyword in Java?和许多其他问题。