android 线程池的好处,Android 线程池原理

本文详细介绍了Java中的线程池实现类ThreadPoolExecutor,包括其核心参数如核心线程数、最大线程数、存活时间等,以及线程池的工作流程和拒绝策略。线程池通过重用线程降低创建销毁成本,有效控制并发数,同时提供了任务调度功能。理解其构造方法参数有助于优化线程池配置,提高系统性能。

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

线程池核心类 :

ThreadPoolExecutor:提供了一系列参数来配置线程池

线程池优点:

1.重用线程池中的线程,线程在执行完任务后不会立刻销毁,而会等待另外的任务,减少创建、销毁线程的次数。

2.有效控制线程池的最大并发数,避免大量线程抢占资源出现的问题。

3.对多个线程进行统一地管理,可提供定时执行及指定间隔循环执行的功能。

构造方法参数理解:

public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue workQueue,ThreadFactory threadFactory)

corePoolSize: 线程池中核心线程的数量。

maximumPoolSize:线程池中最大线程数量。

keepAliveTime:非核心线程的超时时长,当系统中非核心线程闲置时间超过keepAliveTime之后,则会被回收。如果ThreadPoolExecutor的allowCoreThreadTimeOut属性设置为true,则该参数也表示核心线程的超时时长。

unit:keepAliveTime这个参数的单位,有纳秒、微秒、毫秒、秒、分、时、天等。

workQueue:线程池中的任务队列,该队列主要用来存储已经被提交但是尚未执行的任务。存储在这里的任务是由ThreadPoolExecutor的execute方法提交来的。

threadFactory:为线程池提供创建新线程的功能,这个我们一般使用默认即可。

**handler: 拒绝策略,当线程无法执行新任务时(一般是由于线程池中的线程数量已经达到最大数或者线程池关闭导致的),默认情况下,当线程池无法处理新线程时,会抛出一个RejectedExecutionException。

ThreadPoolExecutor 执行任务时大致遵循如下流程:

1.如果线程池中的线程数未达到核心线程数,则会立马启用一个核心线程去执行。

2.如果线程池中的线程数已经达到核心线程数,且任务队列workQueue未满,则将新线程放入workQueue中等待执行。

3.如果线程池中的线程数已经达到核心线程数但未超过线程池规定最大值,且workQueue已满,则开启一个非核心线程来执行任务。

4.如果线程池中的线程数已经超过线程池规定最大值,则拒绝执行该任务,采取饱和策略,并抛出RejectedExecutionException异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值