对于 Java 每次面试就会想到多线程,多线程问题基本跑不了要问一下 volalite 关键字,可是我万万没想到居然一个 volatile 关键字可以连续问题出来 16 个问题!看下你能回答出来几个?

volatile 关键字是什么意思?

你了解到的什么地方使用了 volatile 关键字?解决了什么问题?

volatile 和 JMM 有什么关系?

什么是指令重排?volatile 和指令重排有什么关系?

什么是内存屏障?volatile 和内存屏障有什么关系?

什么是 happens-before?volatile 和它有什么关系?

如果单 CPU 的服务器,是否使用 volatile 对程序有影响吗?

两条语句,第一条是普通写,第二条是 volatile 写,其他线程对第一条普通写可见吗?

volatile int i;i++ 操作会有线程安全问题吗?

volatile 能否替代 CAS?

为什么 AQS 里面的 state 使用了 CAS 还需要 volatile?

Unsafe.putOrderedObject 是什么?能否替代 volatile?

可以认为 CAS + volatile = synchronized 吗?

解决可见性问题,使用了 synchronized 还需要 volatile 吗?

利用 volatile 手写一个懒汉式单例模式,并解释为什么这么写。

使用 volatile 手写一个生产者消费者程序吧。

看了这么多问题其实我们不难看出来一个道理,虽然围绕 volatile 有各种各样的问题变种,但是都离不开他的原理

1. volatile 究竟是什么?

2. volatile 解决了什么问题?

3. volatile 怎么解决这些问题的?

这三个问题如果你弄明白了,其实上面的问题都很好回答。

而爱问volatile关键字的面试官,大多数情况下都是有一定功底的,因为volatile作为切入点,往底层走可以切入Java内存模型(JMM),往并发方向走又可接切入Java并发编程,当然,再深入追究,JVM的底层操作、字节码的操作、单例都可以牵扯出来。

所以说懂的人提问题都是有门道的。那么,先整体来看看volatile关键字都设计到哪些点:内存可见性(JMM特性)、原子性(JMM特性)、禁止指令重排、线程并发、与synchronized的区别……再往深层次挖,可能就涉及到字节码、JVM等。

对与多线程和jvm,这两个也是现在面试的过程中 的重点考察对象,下面也为大家介绍一些资料,希望对大家有所帮助

多线程

文档:

源码解读多线程

多线程面试文档

知识导图

视频

需要这份资料的,扫码添加小助手,免费获取资料

jvm

文档

知识导图

视频

除了添加小助手之外

还可以关注公众号:Java架构师联盟,每日更新技术好文

最新文章

  1. 161227、js显示对象所有属性和方法的函数
  2. eclipse新建文件模板默认charset=ISO-8859-1解决
  3. STL next_permutation和prev_permutation函数
  4. .NET高级工程师面试题之SQL篇
  5. Fluent NHibernate other example
  6. 餐厅到店点餐系统app燃尽图
  7. CallableAndFuture
  8. android 解决ScrollView嵌套ListView的问题,不能全屏,全屏不能显示下面控件
  9. C++11内存模型的一些补充阅读材料
  10. Formiko总结整数十进制转换二进制原理
  11. libvirt(virsh命令总结)
  12. UITextField输入限制/小数/首位等
  13. 洞见世界(1): 拉勾网大数据告诉你, 会计最高月薪达33k!
  14. 一个WPF只能输入数字的行为。
  15. 修改GIT密码
  16. macOS HomeBrew更换源 brew常用命令说明
  17. [Luogu4916]魔力环[Burnside引理、组合计数、容斥]
  18. CF343D Water Tree
  19. Spark性能优化指南-高级篇
  20. Linux路由表信息-route命令

热门文章

  1. Python数据可视化实战:实时更新海外疫情数据,实现数据可视化
  2. 【漏洞三】跨站点脚本(XSS)攻击
  3. java 基础 流程控制
  4. Python 简明教程 --- 6,Python 控制流
  5. Python实用笔记 (21)面向对象编程——获取对象信息
  6. Eclipse中Debug时鼠标悬停不能查看变量值解决办法
  7. HDU 5969 最大的位或【贪心】
  8. UID,GID,口令
  9. QT Creator配置环境和安装
  10. 前端性能优化_css加载会造成哪些阻塞现象?