public class VolatileExample {<br> volatile int sharedValue;<br><br> public void writerThread() {<br> sharedValue = 100; // 对volatile变量的写入操作将立即刷新至主内存<br> }<br><br> public void readerThread() {<br> int localValue = sharedValue; // 对volatile变量的读取操作会从主内存获取最新值<br> }<br>}<br><br>
public class VolatileExample {<br> int a = 0;<br> volatile boolean flag = false;<br><br> public void writer() {<br> a = 1; // step 1<br> flag = true; // step 2<br> }<br><br> public void reader() {<br> if (flag) { // step 3<br> System.out.println(a); // step 4<br> }<br> }<br>}<br><br>
public class Counter {<br> private volatile int count = 0;<br><br> public void increment() {<br> count++; // 单线程环境下,count++并不是原子操作,但在多线程环境下,<br> // volatile能保证每次自增后其他线程都能看到最新的值<br> }<br><br> public int getCount() {<br> return count;<br> }<br>}<br><br>
public class VolatileExample {<br> int a = 0;<br> volatile boolean flag = false;<br><br> public void writer() {<br> a = 1;<br> flag = true; // 线程A对flag的修改对其他线程立即可见<br> }<br><br> public void reader() {<br> if (flag) { // 线程B能立刻看到线程A设置的flag值<br> System.out.println(a);<br> }<br> }<br>}<br><br>