JAVA中的Volatile
一、基本概念
JAVA语言中提供了volatile和synchronized两个关键字来保证线程之间操作的有序,volatile是因为其本身包含“禁止指令中排序”的语义,synchronized是由“一个变量在同一个时刻只允许一条线程对其进行lock操作”这条规则获得的,此规定决定了持有同一个对象锁的两个同步块只能串行执行。
JAVA语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会注意到找个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值。