多线程思维导图
2020-08-24 09:21:49 0 举报
AI智能生成
多线程思维导图
作者其他创作
大纲/内容
1、线程基础、线程
之间的共享和协作
基础概念
CPU核心数,线程数
CPU时间片轮转机制
什么是进程和线程
什么是并行和并发
高并发编程的意义、好处和注意事项
2、Java中线程基础
启动和终止线程
三种启动线程的方式
理解中断
如何安全的终止线程
线程再认识
线程常用方法
线程的状态
线程的优先级
Demon线程
线程间的共享
synchronized
对象锁
类锁
volatile
ThreadLocal
线程间协作
等待和通知机制
Wait,Notify/NotifyAll
等待和通知的标准范式
notify和notifyAll应该用谁
Join方法
调用yield() 、sleep()、wait()、notify()等方法对锁有何影响?
2、线程的并发工具类
Fork/Join
什么是分而治之?
工作密取
使用的标准范式
CountDownLatch作用、应用场景和实战
CyclicBarrier作用、应用场景和实战
CountDownLatch和CyclicBarrier辨析
Semaphore作用、应用场景和实战
Exchange作用、应用场景和实战
Callable、Future和FutureTask
3、原子操作CAS
原子操作类
CAS的原理
CAS的问题
ABA问题
开销
只能保证一个共享变量的原子操作
原子操作类的使用
基本类型
数组
引用
带版本戳
4、显式锁和AQS
显式锁
Lock接口、核心方法和使用
Lock接口和synchronized的比较
ReentrantLock
可重入锁
锁的公平和非公平
ReentrantReadWriteLock
ReadWriteLock接口
使用场景
Condition接口
用处
用Lock和Condition实现等待通知
了解LockSupport
AbstractQueuedSynchronizer
什么是AQS?学习它的必要
AQS使用方式和其中的设计模式
了解其中的方法
实现一个自己的独占锁
深入源码
AQS中的数据结构
节点在同步队列中的增加和移出
独占式同步状态获取与释放
共享式同步状态获取与释放
Condition分析
等待队列
await方法
signal方法
了解ReentrantLock的实现
锁的可重入
公平和非公平锁
了解ReentrantReadWriteLock的实现
9、JMM和底层实现原理
现代计算机物理
上的内存模型
概念
带来的问题
Java内存模型
(JMM)
JVM对Java内存
模型的实现
带来的问题
重排序
类型
依赖性
as-if-serial
重排序带来的问题
内存屏障
临界区
Happens-Before
定义
规则
volatile的内存语义
概念和深入理解
内存语义的实现
重排序规则
内存屏障插入策略
锁的内存语义
final的内存语义
volatile的实现原理
synchronized的实现原理
8、实战项目(2个)
并发任务执行框架
需求的产生和分析
需要做什么
封装多线程,屏蔽细节
保存任务的上下文
自动清除已完成和过期任务
具体实现
可查询进度的并发任务执行框架
应用性能优化实战
项目简介
项目分析,为何优化
分析和改进
架构改进
单服务改进
如何继续改进
带来的启示
7、并发安全
类的线程安全
如何做到类的线程安全
无状态
让类不可变
更多......
线程不安全引发的问题
死锁
原因
表现
检测和解决
活锁
多线程程序
性能和思考
影响性能的因素
减少锁的竞争
线程安全的单例模式
如何让双重检查锁定安全
懒汉式
饿汉式
6、线程池
什么是线程池?为什么要用线程池?
实现一个我们自己的线程池
JDK中的线程池
线程池的创建
提交任务
关闭线程池
线程池工作机制
合理配置线程池
系统为我们预定义的线程池
FixedThreadPool
SingleThreadExecutor
CachedThreadPool
WorkStealingPool
含义
使用场景
ScheduledThreadPoolExecutor
含义
使用场景
内部方法辨析
Executor框架
CompletionService
使用
优点
5、并发容器
ConcurrentHashMap
使用
实现
基本思想
预备知识
Hash
位运算
jdk1.7
构造方法
如何定位
get方法
put方法
扩容
jdk1.8
构造方法
如何定位
get方法
put方法
扩容
其他并发容器
ConcurrentSkipListMap等
了解什么是SkipList
ConcurrentLinkedQueue
写时复制容器
阻塞队列
概念
生产者消费者模式
常用方法
常用阻塞队列辨析
·ArrayBlockingQueue:一个由数组结构组成的有界阻塞队列。
·LinkedBlockingQueue:一个由链表结构组成的有界阻塞队列。
·PriorityBlockingQueue:一个支持优先级排序的无界阻塞队列。
·DelayQueue:一个使用优先级队列实现的无界阻塞队列。
·SynchronousQueue:一个不存储元素的阻塞队列。
·LinkedTransferQueue:一个由链表结构组成的无界阻塞队列。
·LinkedBlockingDeque:一个由链表结构组成的双向阻塞队列。
延时队列实战
阻塞队列实现原理
0 条评论
下一页