Java volatile 关键字详解
2020-2-15定义:
volatile关键是声明的变量表示有其他线程可能会更改该变量的值,所以各线程对于volatile定义的变量必须从主存中获取,而不能通过缓存中获取,但是volatile字段是非阻塞的,即无锁的,也就是说,它只保证每次从主存中获取数据,但是不能让read- update-write过程是成为一个原子操作,这也是它和Synchronized关键字的一个重要区别。
实例:
1 | public class StoppableTask extends Thread { |
如果不加volatile关键字,一开始run()进程便从cache中读到pleaseStop的值为false,是合法的,虽然tellStop()进程可能已经改变了pleaseStop的值为true),但run()进程不会再读pleaseStop的值。
与Synchronized关键字区别:

来源于参考链接
参考:
https://www.javamex.com/tutorials/synchronization_volatile.shtml.
www.javamex.com/tutorialssynchronization_volatile_typical_use.shtml.