线程池-ThreadPoolExecutor

本文详细介绍了线程池的工作原理,包括核心类ThreadPoolExecutor的参数设置与功能,如线程数量控制、任务队列管理及拒绝策略。同时,探讨了线程池在不同场景下的应用与创建方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线程池:
线程执行任务后,不被销毁,再次执行其他任务。
核心类:ThreadPoolExecutor
corePoolSize:大小
maximumPoolSize:最大线程数
keepAliveTime:没执行任务存活时间
unit:时间单位
workQueue:阻塞队列
threadFactory:线程工厂
handler:当拒绝处理任务时的策略(
ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。
ThreadPoolExecutor.DiscardPolicy:也是丢弃任务,但是不抛出异常。
ThreadPoolExecutor.DiscardOldestPolicy:丢弃队列最前面的任务,然后重新尝试执行任务(重复此过程)
ThreadPoolExecutor.CallerRunsPolicy:由调用线程处理该任务

ThreadPoolExecutor(int corePoolSize, 	//初始化创建线程数量
                              int maximumPoolSize,  //线程可创建最大数量,任务数量超过corePoolSize值,先将任务放到队列中,队列满了或者异常,创建线程<maximumPoolSize,超过maximumPoolSize,handler处理
                              long keepAliveTime,  //线程存在时间,超出corePoolSize线程数会激活
                              TimeUnit unit,  //时间单位
                              BlockingQueue<Runnable> workQueue,  //存入的任务队列(LinkedBlockQueue、Synchronous)
                              ThreadFactory threadFactory,  //产生线程的工厂
                              RejectedExecutionHandler handler)  //拒绝处理任务时对应策略

该类(ThreadPoolExecutor)继承抽象类:AbstractPoolExecutor,实现接口:ExecutorService 继承接口 Executor
涉及核心方法:
execute:提交任务到线程池
submit:提交任务到线程池,并返回执行结果Future。
shutdown:关闭线程池,若有任务,等待缓存队列执行完后关闭
shutdownNow:立即关闭,尝试关闭正在执行的任务

声明线程池:由ThreadPoolExecutor实现
Executors.newCachedThreadPool(); //创建一个缓冲池,缓冲池容量大小为Integer.MAX_VALUE
Executors.newSingleThreadExecutor(); //创建容量为1的缓冲池
Executors.newFixedThreadPool(int); //创建固定容量大小的缓冲池

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值