java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > 线程池的七大核心参数以及常用的四种线程池

线程池的七大核心参数以及常用的四种线程池详解

作者:机智小袁

这篇文章主要介绍了线程池的七大核心参数以及常用的四种线程池使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

引言

我们通过线程池可以实现已创建线程的复用,减少资源的消耗;控制并发的数量;以及对线程进行统一的管理。

下面我会对线程池的核心参数以及常用的线程池种类进行详细的讲解。

7大核心参数

int corePoolSize 核心线程最大数量

核心线程:

int maximumPoolSize 线程总数量最大值

改值等于核心线程数+非核心线程数

long keepAliveTime 非核心线程的闲置超时时间

非核心线程闲置时间超过此值就会被销毁

TimeUnit unit (keepAliveTime的单位)

TimeUnit是一个枚举类型:

BlockingQueue workQueue 阻塞队列

常见的几个阻塞队列:

链式阻塞队列,默认大小:Interger.MAX_VALUE,可以指定大小。

数组阻塞队列,需要指定大小

同步队列,内部容量为0,每个put操作都必须等待一个take操作。反之亦然

延迟队列,队列中的元素之后当其指定的延迟时间到了,才能从队列中获取到改元素。

ThreadFactory threadFactory 线程工厂

创建线程的工厂,用于批量创建线程,如果不指定,会新建一个默认的线程工厂。

RejectedExecutionHandler handler 拒绝策略

拒绝处理策略,当无法创建新线程处理任务并且阻塞队列已满时就会采用拒绝处理策略。

jdk默认四种策略:

常用的四种线程池

newCachedThreadPool (可缓存线程池)

核心线程数为0,总线程数是最大整数,当需要执行很多短时任务时它的服用率比较高,会显著提升性能。并且线程空闲60s就会被回收,所以如果没有任务,它并不会占用很多资源。

newFixedThreadPool(指定工作线程数量的线程池)

核心线程数等于最大线程数。也就是该线程池中没有非核心线程。

newSingleThreadPool(单线程化的线程池)

只有一个核心线程,所有任务按照先来先执行的顺序执行。

newScheduledThreadPool(定长线程池)

这个线程池指定了核心线程的数量,线程总数可以创建整数的最大数个。

该线程池支持定时以及周期性任务执行。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文