Java多线程 Java内存模型相关常见面试题

什么是Java内存模型?(重点)

c语言没有内存模型, 在多核情况下表现不一致.
有三种概念, JVM内存结构, Java对象模型, Java内存模型.
JVM内存结构, Java对象模型可以点击下面的链接查看.
JVM内存结构, Java对象模型
JMM Java内存模型可以点击下面的链接.
JMM Java内存模型
重排序 可见性 原子性 是JMM最主要的体现,也是最重要的内容.
可以讲讲重排序的例子和好处.
重点放在可见性上, 讲讲JMM的抽象, 抽象成了主内存和工作内存这两块.
再可以讲讲happens-before九大规则
happens-before九大规则
接着可以讲讲volatile关键字. volatile的适用场合 , 以及和synchronized的关系 .
synchronized不仅仅保证原子性, 并且保证可见性. 并且把synchronized附近的代码, 都可以做到同步的效果.
接着讲讲原子性
原子性介绍 ,Java中的原子性

volatile和synchronized的异同

volatile和synchronized的异同

原子性

什么是原子性, Java中有哪些原子性操作, 生成对象的过程是不是原子性操作,
原子性介绍 ,Java中的原子性

生成对象不是原子性操作

64位的double 和long 写入的时候一定是原子的吗?
Java中没有规定一定是原子性的, 那么在写入的时候, 可能会出现前32位和后32位错位的情况.
但是在实际的生产环境中, 都是原子性的, 因此在实际的开发中, 不需要对double和long进行额外的保证原子性的操作.

可见性

什么是内存可见性?
可见性demo
可见性问题出现的原因

猜你喜欢

转载自blog.csdn.net/qq_33229669/article/details/108454252