notesArea/Java/多线程/Volatile.md

Volatile

Java 中每个线程都有自己的工作内存,会在其中缓存主内存变量的值。在多线程环境下,如果某个主内存变量的值被修改了,在线程中该值所对应的缓存值不一定会立即更新,因此可能带来并发问题。

解决该问题的一个思路就是给主内存变量加上关键词 volatile。该关键词保证所有用到该变量的线程能够立即看到主内存变量的更新,也会在线程更新工作内存中的变量之后,立即将更新同步到主内存中的变量。

原理

对于 volatile 所修饰的变量,线程每次读取的时候都会读取最新的值,然后刷新自己工作内存中的值。如果线程在自己的工作内存中修改了该变量,也会立即将更新同步到公共变量。

大纲
文件