volatile是java提供的一种同步手段,只不过它是轻量级的同步。因为volatile只能保证多线程的内存可见性,不能保证多线程的执行有序性。
而最彻底的同步要保证有序性和可见行,例如 synchronized。任何被volatile修饰过的变量,都不拷贝副本到工作内存,任何修改都及时写在主存。
因此对于volaile修饰的变量的修改,所有线程马上就能看到,但是volatile不能保证对变量的修改是有序的。
而最彻底的同步要保证有序性和可见行,例如 synchronized。任何被volatile修饰过的变量,都不拷贝副本到工作内存,任何修改都及时写在主存。
因此对于volaile修饰的变量的修改,所有线程马上就能看到,但是volatile不能保证对变量的修改是有序的。