外观
如何设计一个适合 Android 应用的线程池配置策略?
标准回答
先按 CPU 密集、I/O 等待和顺序任务分组,再设置线程上限、有界队列与拒绝策略;CPU 任务以可用核数为起点实测,I/O 任务按等待比例和依赖容量调整。页面退出取消无用任务,不把被拒绝的耗时工作随意退回主线程执行。
通俗例子
CPU 计算开太多线程会互相抢核心;网络任务可能允许更多等待中的任务,但仍要限制队列、超时和并发请求。
深入解释
**线程池接单的过程:**以常见 ThreadPoolExecutor 配置理解:先使用核心线程,后续任务可能进入队列;队列满后才考虑扩到最大线程数,仍无法接收时执行拒绝策略。
**为什么队列不能忽略:**任务提交速度长期大于处理速度,排队就会越来越多,占内存并增加等待。应同时控制并发、队列容量、超时与拒绝后的业务行为。
易混淆点
CallerRunsPolicy 若在主线程触发,会把耗时工作直接压回主线程。
内容来源
- Android · AI Agent 知识手册 · 原条目
4.4.2