版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38331606/article/details/84620278
- volatile:synchronized的轻量级实现
- 作用:保证数据的可见性,以及确保变量不会被重排序
volatile关键字修饰的成员变量,不存在工作线程的副本;每次直接都从主内存中读取。只能保证数据的可见性,但不保证操作的原子性。
-
- 使用案例
- 和Synchronized结合,用于对变量n读多写少的情况
- 使用案例
告诉处理器, 不要将我放入工作内存, 请直接在主存操作我。
-
-
- 和CAS结合保证操作的原子性,如AtomicInteger
-
-
-
- 修饰线程之间的共享变量
-
如下图程序,运行时会一直卡在循环中。即子线程中修改主存后,但是main线程读取的是当前线程存储空间的值,导致循环不能停止。添加volatile修饰后,在子线程运行结束后,主线程会退出循环。
-
- 注意事项:本身不具备线程安全的特性