java面试-谈谈你对volatile的理解

Posted wjh123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java面试-谈谈你对volatile的理解相关的知识,希望对你有一定的参考价值。

volatile是Java虚拟机提供的轻量级的同步机制。主要有三大特性:
一、保证可见性
1、代码演示
2、volatile是如何来保证可见性的呢?
如果对声明了volatile的变量进行写操作,JVM就会向处理器发送一条Lock前缀的指令。
1)将这个变量所在缓存行的数据写回到系统内存。
2)这个写回内存的操作会使在其他CPU里缓存了该内存地址的数据无效。
二、不保证原子性
1、代码演示
2、volatile为什么不保证原子性?

 n++被拆分成3个指令:

getfield  从主内存中拿到原始值
iadd 在线程工作内存中进行加1操作
putfield 把累加后的值写回主内存

技术图片

3、如何解决原子性问题
synchronized
Lock
AtomicInteger
三、禁止指令重排序

 

 

 

 

以上是关于java面试-谈谈你对volatile的理解的主要内容,如果未能解决你的问题,请参考以下文章

Java面试经典题解析——谈谈你对Java平台的理解?

java面试题(杨晓峰)---谈谈你对java平台的理解

JAVA面试题 请谈谈你对Sychronized关键字的理解?

面试必问的 volatile,你真的会了吗

谈谈你对异常的理解(高频面试题)

66期Java容器面试题:谈谈你对 HashMap 的理解