volatile在java中是一个很棒棒的修饰符,在我们使用多线程时,当线程没有结束就发生了互换,这就可能造成一个线程在主存里修改了变量的值,从而带来错误,所以,如果我们还要继续使用它在寄存器中的原本的值,就需要把变量声明为volatile类型(就是不稳定类型,让编译器不要给这个数据进行优化,舍弃优化,换来安全性),volatile会使得这个变量不稳定,每次使用它都要到主存里读取,因此,在多线程环境下,volatile关键字的使用就变得非常重要。一般来说,多线程环境下各线程间的共享的变量都应该加volatile修饰。
可以这样定义 volatile public int i;
i为各线程都共享的变量!