01-Java 并发
2022-03-22 13:52:35 5 举报
AI智能生成
以思维导图的形式,汇总 【Java 并发】相关的面试点
作者其他创作
大纲/内容
线程池
为什么要用线程池?
Executor
示意图
分支主题
Executor和Executors的区别?
常用的JAVA线程池有哪几种类型?
Executors 提供了哪些创建线程池的方法?
流程
线程的5种状态
API
线程池核心参数
核心线程数
阻塞队列
使用队列的注意点
最大线程数
拒绝策略
keepAliveTime(保持存活时间
execute()vs submit()
shutdown() vs shutdownNow()
isTerminated() vs isShutdown()
实战
线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式
如何合理配置线程池参数?
源码
ctl
为啥要用一个int值表示两个组合状态
处理任务流程
为什么要有核心线程池
一些问题
核心线程怎么实现一直存活?
源码中线程池是怎么复用线程的?
非核心线程能成为核心线程吗?
非核心线程如何实现在 keepAliveTime 后死亡?
一个线程异常了会怎么样?
并发工具
Fork/Join框架
获得任务执行结果
三种submit()
Future
API
FutureTask 工具类
Semaphore 信号量
是什么?
为什么要有?
基于AQS的同步组件
CountDownLatch
原理
应用
不足
CyclicBarrier
CyclicBarrier
怎么用?
线程安全
保证线程安全的方式
线程安全的类有哪些,平时有使用么,用来解决什么问题
ConcurrentHashMap
策略模式+工厂模式
线程基础
概念
1.线程和进程有什么区别?
什么是进程
什么是线程
一个进程最多能有几个线程
进程与线程区别 JVM角度
3.为什么要使用多线程呢?
什么是线程上下文切换
守护线程
是什么
和操作系统的关系
线程实现
在用户空间实现线程
优势
劣势
在内核空间实现
优劣势
混合实现
内核线程的一些系统调用函数
线程的状态流转?
线程阻塞的三种情况
线程死亡的三种方式
状态流转
线程死锁?
死锁必须具备以下四个条件?
如何预防避免线程死锁?
预防
避免
如何检测死锁/发现死锁
API
创建线程的三种方式的对比?
Runnable VS Callable
Callable是怎么拿到返回结果的
如何创建线程实例并运行?
sleep()方法和wait()方法区别和共同点?
yield()
8.为什么我们调用start(0方法时会执行run()方法,为什么我们不能直接调用run()方法
ThreadLocal
29.ThreadLocal是什么?
31.知道ThreadLocal内存泄露问题吗?
30.ThreadLocall的实现原理
如果不remove,出问题了怎么补救?
JMM
synchronized
使用场景
作用用法
构造方法可以使用 synchronized 关键字修饰么?
底层实现原理?
底层monitor对象的原理
比较
synchronized和ReentrantLock区别是什么?
synchronized 和 Lock 有什么区别?
synchronized和volatile的区别是什么?
锁优化
为什么锁升级
编译器优化
锁膨胀
锁消除
锁粗化
自旋锁与自适应自旋锁
锁升级优化
偏向锁
为什么要有?
偏向锁原理和升级过程
过程
分支主题
轻量级锁
轻量级锁原理和升级过程
自旋锁与重量级锁
一些问题
synchronized为什么是非公平锁?非公平体现在哪些地方?
synchronized锁能降级吗?
并发编程的三特性
原子性
volatile
使用场景
指令重排
CPU缓存结构
JMM内存模型
实现原理
可见性
指令重排
原子类
3.简单介绍一下Atomiclnteger类的原理?
2.JUC包中的原子类是哪4类?
CAS
CAS是什么?
处理器如何实现原子操作
CAS有什么缺陷?
无锁只有cas一种实现吗 ,有其他实现方式吗
Happens-Before
JMM
概述
锁
ReentrantLock
21.synchronized和ReentrantLock区别是什么?
源码
公平锁 和 非公平锁
可重入性
AQS
1.说一说什么是AQS?
流程
分支主题
原理
了解AQS对资源的共享方式吗?
AQS使用了哪些设计模式?
锁分离优化 Lock 同步锁
ReentrantReadWriteLock
实现原理
ReadWriteLock是什么?
自旋锁
乐观锁和悲观锁
分支主题
0 条评论
下一页