外观
CPU 和 IO 线程池如何配置 拒绝策略如何选择?
标准回答
CPU 密集任务的并行度通常从可用核心数附近开始测量,避免过多线程争抢;IO 密集任务可适度增加并发,但要结合设备、下游能力和内存限制,并使用有界队列。拒绝策略取决于业务:必须保留的任务要显式失败或进入可靠队列;可丢的预加载或过期刷新可以采用受控丢弃;CallerRuns 会让提交线程执行,能形成背压,但如果提交者是 UI 或 Binder 线程就可能造成卡顿。AbortPolicy 会抛出 RejectedExecutionException,需要调用方处理。
延伸追问
读取文件也会占磁盘、内存和线程,并不是纯读取就可以无限并发;DiscardOldestPolicy 也不保证丢掉的任务在业务上最不重要。
内容来源
- Android Framework 知识手册 · 原条目
4-14