线程池的重要参数

2022-12-14  本文已影响0人  垂直居中的句号
  1. 核心线程数

  2. 最大线程数,

3.非核心线程的空闲时间(keepAliveTime) keepAliveTime 非核心线程存活时间,标记非核心线程空闲多久后被干掉

4.unit:keepAliveTime的时间单位

5.workQueue用于保存任务的队列,可以为无界、有界、同步移交三种队列类型之一,

6.hreadFactory:创建线程的工厂类

  1. handler拒绝策略
    abortPolicy 中断抛弃异常
    DiscardPolicy 丢弃
    DiscardOldestPolicy 丢弃队列中存活时间最久的
    CallerRunsPolicy 让提交任务的线程去执行任务

ExecutorService executor = new ThreadPoolExecutor

newFixedThreadPool 没有非核心线程数,缓存队列是无界队列 ;;当请求过多时(任务处理速度跟不上任务提交速度造成请求堆积)可能导致占用过多内存或直接导致OOM异常
newSingleThreadExector 核心线程数为1,没有非核心线程数,缓存队列是无界队列;;当请求过多时(任务处理速度跟不上任务提交速度造成请求堆积)可能导致占用过多内存或直接导致OOM异常

newCachedThreadPool 核心线程数为0,最大线程数很大,队列使用的同步移交队列,当请求很多时就可能创建过多的线程,导致资源耗尽OOM

newScheduledThreadPool 核心线程数定长,最大线程数很大,队列使用的延迟队列 ;当请求很多时就可能创建过多的线程,导致资源耗尽OOM

https://www.jb51.net/article/212105.htm

上一篇 下一篇

猜你喜欢

热点阅读