Java并发/多线程-线程池的使用

本文深入探讨了Java中ThreadPoolExecutor类的使用,包括其核心参数如核心线程池大小、最大线程池大小、线程空闲存活时间和阻塞队列的选择。同时,介绍了四种内置的拒绝策略:CallerRunsPolicy、AbortPolicy、DiscardPolicy和DiscardOldestPolicy,以及它们在任务过多时如何处理新请求。通过实例展示了newCachedThreadPool、newFixedThreadPool和newSingleThreadExecutor的配置方式。

这三个API的底层其实都是由同一个类实现的:ThreadPoolExecutor 类

public static ExecutorService newCachedThreadPool() {
return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
60L, TimeUnit.SECONDS,
new SynchronousQueue());
}
public static ExecutorService newFixedThreadPool(int nThreads) {
return new ThreadPoolExecutor(nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue());
}
public static ExecutorService newSingleThreadExecutor() {
return new FinalizableDelegatedExecutorService
(new ThreadPoolExecutor(1, 1,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue()));
}
ThreadPoolExecutor 类
七大参数
ThreadPoolExecutor类主要有以下七个参数:

int corePoolSize: 核心线程池大小
int maximumPoolSize: 最大核心线程池大小
long keepAliveTime: 线程空闲后的存活时间
TimeUnit unit: 超时单位
BlockingQueue workQueue: 阻塞队列
ThreadFactory threadFactory: 线程工厂:创建线程的,一般默认
RejectedExecutionHandler handle: 拒绝策略
四种拒绝策略
拒绝策略就是当队列满时,线程如何去处理新来的任务。

Java内置了四种拒绝策略:

ThreadPoolExecutor.CallerRunsPolicy()

ThreadPoolExecutor.AbortPolicy()

ThreadPoolExecutor.DiscardPolicy()

ThreadPoolExecutor.DiscardOldestPolicy()
USB Microphone https://www.soft-voice.com/
Wooden Speakers https://www.zeshuiplatform.com/
亚马逊测评 www.yisuping.cn
深圳网站建设www.sz886.com

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值