ThreadPoolExecutor 简介
作者:互联网
线程资源必须通过线程池提供, 不允许在应用中自行显式创建线程。
说明: 线程池的好处是减少在创建和销毁线程上所消耗的时间以及系统资源的开销, 解决资源不足的问题。如果不使用线程池, 有可能造成系统创建大量同类线程而导致消耗完内存或者“过度切换” 的问题。
线程池不允许使用 Executors 去创建, 而是通过 ThreadPoolExecutor 的方式, 这样的处理方式让写的同学更加明确线程池的运行规则, 规避资源耗尽的风险。
说明: Executors 返回的线程池对象的弊端如下:
1) FixedThreadPool 和 SingleThreadPool:允许的请求队列长度为 Integer.MAX_VALUE, 可能会堆积大量的请求, 从而导致 OOM。
2) CachedThreadPool:允许的创建线程数量为 Integer.MAX_VALUE, 可能会创建大量的线程, 从而导致 OOM。
3) ScheduledThreadPool:允许的请求队列长度为 Integer.MAX_VALUE, 可能会堆积大量的请求, 从而导致 OOM。
/** * * @param corePoolSize 线程池维护线程的最少数量 * @param maximumPoolSize 线程池维护线程的最大数量 * @param keepAliveTime 线程池维护线程所允许的空闲时间 * @param unit 线程池维护线程所允许的空闲时间的单位 * @param workQueue 用于缓存任务的阻塞队列 * @param threadFactory 指定创建线程的工厂, * @param handler 线程池对拒绝任务的处理策略 */ public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler) {}
标签:创建,param,线程,简介,允许,MAX,ThreadPoolExecutor 来源: https://www.cnblogs.com/vipsoft/p/16354998.html