首先简单来说,volatile就是表示某个事物是不稳定的、易变的。
其次,volatile具有可见性、有序性,但不具备原子性(与synchronized相比,volatile不会阻塞线程且响应速度比synchronized快)。
做为关键字来说,volatile用来声明变量的值有可能随时会被别的线程修改。使用volatile修饰的变量会强制将修改的值立即写入主存,主存中值的更新会使缓存中的值失效(非volatile变量不具备这样的特性,非volatile变量的值会被缓存,线程A更新了这个值,线程B读取这个变量的值时可能读到的并不是是线程A更新后的值)。volatile禁止指令重排。