Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java-易失性对象的字段不可见?_Java_Volatile - Fatal编程技术网

java-易失性对象的字段不可见?

java-易失性对象的字段不可见?,java,volatile,Java,Volatile,有人有一些演示代码来证明这一点吗 我从中看到了“不”的答案 但是我不理解这篇文章的例子。读写线程都已启动,然后加入 writerThread.start(); readerThread.start(); writerThread.join(); readerThread.join(); 我认为w.start->w.join->r.start->r.join应该是正确的。但按照这个顺序,结果是不同的(w.start->w.join->r.start->r.join将基本上使其同步,因为您正在启动

有人有一些演示代码来证明这一点吗

我从中看到了“不”的答案

但是我不理解这篇文章的例子。读写线程都已启动,然后加入

writerThread.start();
readerThread.start();
writerThread.join();
readerThread.join();

我认为w.start->w.join->r.start->r.join应该是正确的。但按照这个顺序,结果是不同的(

w.start->w.join->r.start->r.join
将基本上使其同步,因为您正在启动
w
,然后等待它完成,然后再启动
r
文章说的是正确的,字段将对所有线程可见,问题是声明的字段一次只能访问或写入一个在
w
中有一个1U睡眠。可能readThread在此期间读取了a&b,因此a&b的结果不同。它无法证明标题。java-volatile对象的字段在任何地方都不可见-beeing volatile与可见性无关。您看到的是不同的故事。您是对的。本文只是证明了这一点米西蒂,不是能见度。