java 线程池

1、目的

线程复用,避免频繁的创建、销毁线程耗费资源

2、java 线程池

(接口)Excutor   ->  (接口)ExcutorService  - >  (抽象类)AbstractExcutorService  ->  (类)ThreadPoolExcutor

3、关键参数

核心线程数、最大线程数、空闲线程存活时间、任务缓存队列的选择、淘汰策略的选择

4、任务队列类型

SynchronousQueue 阻塞队列,没有容量,不可缓存任务,可以理解为数据交换通道;

ArrayBlockingQueue 有界队列,缓存一定数目的任务

LinkedBlockingQueue 无界队列,最多存放Interger.Max个任务

5、淘汰策略

 - 抛异常

 - 直接丢弃,不抛异常

 - 丢弃最早的task,再次尝试excute

 - 采用回调线程本身去执行task

6、Excutors实现了的几种线程池

  - 固定大小的 - LinkedBlockingQueue

  - cache类型的,线程可无限扩大 SynchronousQueue

  - 单线程(可保证执行顺序)- 对应LinkedBlockingQueue队列

  - 单线程调度(延迟执行、周期调度)- DelayedWorkQueue

  - 多线程调度线程池(延迟执行、周期调度) - DelayedWorkQueue

  -  newWorkStealingPool(最终返回ForkJoinPool对象)

 

posted @ 2018-04-28 16:38  沙中世界  阅读(380)  评论(0编辑  收藏  举报