【Java并发面试点】看这一篇应该是够了
Java并发编程是Java后端、大数据开发面试必问项目之一,求职者务必掌握!
Java并发面试点List
- 并发概念须知:进程与线程、同步与异步、并发与并行、阻塞与非阻塞、死锁与活锁、上下文切换的问题;
- 并发级别:阻塞、无饥饿、无障碍、无锁、无等待
- 线程状态:新建状态、可运行、阻塞、无限期等待、有限期等待、死亡
- 创建线程的几种方式:Thread类、Runnable接口、Callable和Future、线程池
- 终止线程的几种方式:标志位退出线程、stop方法强制终止、interrupt终止线程
- 线程间协作的方式:等待/唤醒、join、yield
- 并发锁(线程同步方式):volatile、synchronized、ReenTrantLock、ThreadLocal、读写锁、CountDownLatch、信号量等或者采用并发集合ConcurrentHashMap,原子类Atomic等
- 锁的优化:偏向锁、轻量级锁、自旋锁、锁消除
- 线程池:为什么用线程池、ThreadPoolExecutor类、BlockingQueue、增长策略、拒绝策略
- 并发集合:ConcurrentHashMap源码分析、CopyOnWriteArrayList、BlockingQueue、快速失败和安全失败
- 同步器(AQS):源码分析、典型实现类(如ReenTrantLock、原子类)
- 无锁实现:CAS、ABA问题
- Java内存模型(JMM):原子性、可见性、有序性
- happen-before原则
- 生产者和消费者模式
- 多生产者和多消费者模式
推荐学习方法
层次化学习:基础+原理+源码
【1】首先结合学习视频,对多线程的基本操作进行实践操作,比如创建线程、多线程之间同步、生产和消费等;
【2】然后系统看书,推荐以《实战Java高并发程序设计》作为入门书籍,简单且系统;
【3】针对某些重点,比如AQS、并发包源码,查看进阶书籍《Java并发编程的艺术》或者《Java并发编程实战》部分章节;
【4】学习源码,推荐看下ConcurrentHashMap、AQS、ReenTrantLock等源码,学习方式以源码包和博客分析为主。
推荐书籍
电子版书籍,看主页“加群”获取。