对于 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 怎么解决这些问题的?
这三个问题如果你弄明白了,其实上面的问题都很好回答。
如果你还是回答不上来,那么需要 整体 的补充一下 Java 多线程原理的知识了,或许你缺少下面这样一个 大图,从一个 大而全 的维度看问题。偷偷的告诉你,上面的这些问题在下面的资料里面都能找到答案哦。而且下面就有一个 免费 的直播课程,专门讲解多线程的原理哦,看了以后再也不用担心别多线程问题难倒了。
扫码领取
Java工程师学习思维导图
当然有这些还不够,这里推荐一个免费的学习地方——网易云课堂,每周都会有多场直播公开课,网易的Java技术专家们会分享高并发、分布式、多线程等干货知识,还可以拿到各种Java技术思维导图和资料。
5.20-5.24 Java限时0元课程
1、技术:《90分钟掌握高并发的保护系统》- 你是否忽略了缓存的作用?
- 合并多个用户请求,发挥批量处理的高性能优势
- 利用JAVA多线程技术,实现性能倍增
- 锁与多线程难解的亲密关系
- JAVA锁导致的请求时快时慢
- 从锁的内部构造分析并解决问题
- 面试哪些多线程知识你最需要准备!
- 多线程实战!带你把多线程融合到业务系统
- 如何用多线程优化你的业务代码
- 知其然也要知其所以然,线程技术原理剖析
- JAVA多线程并发编程学习路线图
- 应对高并发不光有分流
- 分布式限流策略分享
- 限流技术实现原理剖析
- 互联网系统技术架构分享
- starter工作原理解密
- spring boot 参数规则解密
- 如何制作自己的公共starter
- 如何让自己更优秀分享