valatile关键字

起两个作用

  1. 内存的可见性
    在程序工作的过程中,会存在工作内存(比如多线程工作时的变量内存)和主内存,在修改完这个线程对象的一瞬间,该线程的工作内存已经改变,主内存还没有改变,其他线程可能存在数据不一致的问题
    使用valatile修饰后,该对象会立刻刷新到主内存和其他工内存。
  2. 顺序性,
    防止指令重排序。java在重新编译后,为了优化,字节码的顺序可能和我们所定义的顺序不一致,加上valatile,可以避免这种情况。