volatile关键字在多线程场景中使用,其底层实现原理是:
- 当对volatile变量执行写操作后,JMM会把工作内存中的最新变量值强制刷新到主内存
- 写操作会导致其他线程中的缓存无效
操作系统的缓存行(cacheline)默认是64bytes,声明一个变量volatile int x = 0
,当两个线程同时对x进行 x++ 操作时,会先将x加载到自己的缓存中,修改之后强制刷新到公共的缓存中,以此来保证一致性。
volatile关键字在多线程场景中使用,其底层实现原理是:
volatile int x = 0
,当两个线程同时对x进行 x++ 操作时,会先将x加载到自己的缓存中,修改之后强制刷新到公共的缓存中,以此来保证一致性。