欢迎光临散文网 会员登陆 & 注册

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

2020-09-07 19:45 作者:超人归来thc  | 我要投稿


什么是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
可见性问题出现的原因


Java多线程 Java内存模型相关常见面试题的评论 (共 条)

分享到微博请遵守国家法律