并发编程
2022-12-20 17:18:05 4 举报
并发编程总纲
作者其他创作
大纲/内容
AQS
琐
重量级琐&轻量级琐
重入琐
重入琐概念
Synchroniezed 重入实现原理
其他琐实现原理
死锁
饥饿
Synchroniezed
琐升级过程
Lock
CAS
分支主题
分支主题
分支主题
分支主题
分支主题
分支主题
分支主题
分支主题
分支主题
分支主题
Thread
创建&使用
实现Runnable接口
实现Runnable接口
基础Thread类重写run方法
生命周期
New(新建)
Ready(就绪)
Running(运行中)
Waiting(等待状态)
Time-Waiting(超时等待状态)
Blocked(阻塞状态)
Terminated(终止状态)
Future
FutureTask
ThreadLocal
ThreadPool
使用场景
创建方式
构造方法
corePoolSize
核心线程数
maximumPoolSize
最大线程数
keepAliveTime
空闲线程存活时间
TimeUnit
keepAliveTime 时间单位
BlockingQueue<Runnable>(任务队列)
ArrayBlockingQueue
LinkedBlockingDeque
PriorityBlockingQueue
SynchronousQueue
......
ThreadFactory
线程工厂
RejectedExecutionHandler
拒绝策略
Executors
newFixedThreadPool
固定大小的线程池 核心线程数等于最大线程数 有线程挂掉后会自动创建新的线程
newSingleThreadExecutor
单线程的线程池 核心线程等于最大线程数=1 有线程挂掉后会自动创建新的线程
newCachedThreadPool
核心线程数0 最大线程数Integer.MAX_VALUE 空闲线程60秒回收 可创建的线程数由操作系统决定
newScheduledThreadPool
任务调度的线程池 支持定时以及周期性执行任务
newWorkStealingPool
jdk1.8新增的 该池维护足够的线程以支持给定的并行度级别,并且可以使用多个队列来减少争用。并行度级别对应于活跃地从事或可用于从事任务处理的线程的最大数量。线程的实际数量可能会动态增加或减少。工作窃取池不能保证提交的任务的执行顺序。
工作流程
submit
execute
拒绝策略
AbortPolicy 中止策略
不指定默认使用
CallerRunsPolicy 由调用者线程执行
DiscardPolicy 忽略当前任务
DiscardOldestPolicy 忽略最早的提交的任务
自定义策略
实现 RejectedExecutionHandler 接口
源码分析
ctl
workers
allowCoreThreadTimeOut
线程池状态流转
分支主题
分支主题
分支主题
分支主题
分支主题
分支主题
分支主题
分支主题
分支主题
0 条评论
下一页