程序猿之路程序员

ExecutorService 详解

2017-06-16  本文已影响172人  三斤牛肉

ThreadPoolExecutor

主要参数:

线程池核心大小,当从没有任务到新任务进入时线程从0上涨到coreSize

线程池queue满后新建线程到maxSize为止

线程无工作后开始计时,如果时间大于keepAliveTime并且总线程数大于coreSize则被回收

工作队列,由用户自定义,不同的QUEUE代表了不同的处理方式

线程工厂,一般用默认的

当队列满,线程池满后的异常状况处理,默认抛rejectexecutionException

核心代码:

image.png

中间这步比较特殊,是当前工作线程为空,但是还有任务在队列中则新建一个线程。

常用:

FixedThreadPool

特点

使用问题:

固定的线程数,无界的Queue,当有大量任务时,queue过长可能导致oom

CachedThreadPool

特点

使用问题:

当前面线程没有结束时,会一直创建新线程一直到Integer.MAX,然后queue进入等待,
一般会直接导致线程不够用
线程池伸缩会很厉害,极限范围0—Integer.MAX
适用于快速失败的情况

上一篇 下一篇

猜你喜欢

热点阅读