修饰符 volatile 告诉编译器不需要优化volatile声明的变量,让程序可以直接从内存中读取变量。对于一般的变量编译器会对变量进行优化,将内存中的变量值放在寄存器中以加快读写效率。
volatile 往往会用于多线程的修饰,比如:
volatile boolean isNext = false;
Thread A() {
// 第一个工作
// isNext = true;
}
Thread B (){
if (isNext) {
// 第二个工作
}
}
这里volatile 就是从来标记isNext, 以确保线程B每次都重新从内存中读取isNext的值,第二个工作一定在第一个工作之后进行。