这是对以前线程池相关笔记的重新整理,基本上包含了线程池相关主要的知识点

  • 为什么需要使用线程池

    创建新的线程代价大

    new Thread方式线程缺乏统一的管理: 线程复用,控制最大并发数

基本架构

线程池执行流程

线程池代码执行流程

拒绝策略

AbortPolicy(默认): 直接抛出java.util.concurrent.RejectedExecutionException异常

CallerRunsPolicy: 主线程直接执行该任务,执行完之后尝试添加下一个任务到线程池中,可以有效降低向线程池内添加任务的速度

DiscardOldestPolicy: 抛弃旧的任务

DiscardPolicy: 抛弃当前任务