Volatile
volatile的中文意思是不稳定的、易变的,用volatile修饰的变量是为了保证变量的可见性。
Volatile作用:用来确保将变量的更新操作通知到其他线程
原理:
1)编译器会注意到被volatile修饰的变量是共享的,因此不会将该变量上的操作与其他内存操作一起重新排序
volatile变量不会被缓存在寄存器中,因此读取volatile变量总会返回最新的值
2)在访问volatile变量时,不会执行加锁操作,因此也不会阻塞线程,对非volatile变量进行读写时,每个线程先从内存拷贝变量到CPU缓存中
总结:不会重排、不会缓存(永远是最新值)、不会加锁(因此不会阻塞)