理解 Jdk volatile应用和实现原理
Java 多线程并发编程中,常用到两个关键字:synchronized 和 volatile,synchronized 是重量级锁,而 volatile 可以理解为轻量级的 synchronized 。volatile 不保证对共享变量的读改写(如 i++)具有原子性,因此不能笼统说它“保证线程安全”;但在简单的 flag 开关、状态发布等场景下,用它做正确同步是可以的。
volatile 在并发环境中保证了共享变量的 可见性,即当一个线程修改一个共享变量时,另一个线程能读到这个修改的值。volatile 变量修饰符使用适当的话,相对于 synchronized 的使用和执行成本更低,因为它不会引起线程上下文的切换和调度。