java 线程池
线程池
ThreadPool
- 线程池包含两个list
- 一个是线程list 一个是等待队列的list
- 一个线程池包含7个重要的参数
- corePoolSize: 核心线程数 线程池被创建时 该线程池中就会有这两个线程
- maximumPoolSize:最大线程数
- keepAliveTime: 如果线程池长期不工作会归还线程数 数量,但是不会归还核心线程
- keepAliveUnit: 如果线程池长期不工作会归还线程数 单位,但是不会归还核心线程
- 消费队列: 可以指定各种Queue
- 线程池工厂: 里面可以自定义线程的参数 比如group ,名称等等
- 拒绝策略 比如抛异常 或者 无视或者抛弃一些线程的里的任务,也可以实现接口自己去实现。
SingleThreadPool
- 一个只有一个任务的线程池,可以保证任务的顺序执行。
CachedPool
- 没有核心线程,最大线程数为Integer.maxValue
FixedThreadPool
- 接受一个参数 核心线程喝最大线程都为这个值,并且最大线程数为Integer 的最大值
ScheduledPool
- 定时任务的线程池
WorkStealingPool
- 每个线程都有自己单独的队列
- 当某个线程 执行完以后他会去其他线程里替其他线程分担任务。
ForkJoinPool
- 把一个大任务切换为多个小任务
- 递归的任务,因为小任务还会存在小任务