ThreadPoolExecutor 3 个最重要的参数:
corePoolSize:核心线程数,线程数定义了最小可以同时运行的线程数量。maximumPoolSize:线程池中允许存在的工作线程的最大数量workQueue:当新任务来的时候会先判断当前运行的线程数量是否达到核心线程数,如果达到的话,任务就会被存放在队列中。
ThreadPoolExecutor其他常见参数:
keepAliveTime:线程池中的线程数量大于corePoolSize的时候,如果这时没有新的任务提交,核心线程外的线程不会立即销毁,而是会等待,直到等待的时间超过了keepAliveTime才会被回收销毁;unit:keepAliveTime参数的时间单位。threadFactory:为线程池提供创建新线程的线程工厂handler:线程池任务队列超过 maxinumPoolSize 之后的拒绝策略
hreadPoolExecutor饱和策略
ThreadPoolExecutor 饱和策略定义:
如果当前同时运行的线程数量达到最大线程数量并且队列也已经被放满了任时,ThreadPoolTaskExecutor 定义一些策略:
AbortPolicy:抛出RejectedExecutionException来拒绝新任务的处理。CallerRunsPolicy:调用执行自己的线程运行任务。您不会任务请求。但是这种策略会降低对于新任务提交速度,影响程序的整体性能。另外,这个策略喜欢增加队列容量。如果您的应用程序可以承受此延迟并且你不能任务丢弃任何一个任务请求的话,你可以选择这个策略。DiscardPolicy:不处理新任务,直接丢弃掉。DiscardOldestPolicy: 此策略将丢弃最早的未处理的任务请求。