1.保证线程的可见性
java里面有堆内存,堆内存是所有线程共享里面的内存,除了共享的内存之外,每个线程都有自己专属的区域,都有自己的工作内存,改变的时候改变的就是自己的专属区域的内存,当对变量加上volatitle关键字后,保证了一个线程的改变,另外一个线程马上就能看到。
2.禁止指令重新排序
指令重新排序和CPU有关系,每次写都会被线程读到,加了volatitle之后,cpu原来执行一条指令的时候,它是一步一步的顺序执行,但是现在的cpu为了提高效率,它会把指令并发的执行,第一个指令执行到一半的时候,第二个指令已经开始执行了,叫做流水线式的执行。