题目
在一个使用TaskPool的应用程序中,你发现当任务数量激增时,系统性能没有明显下降。这最可能是因为:A. 任务的优先级设置为最高B. 系统自动增加了工作线程的数量C. 所有任务都是I/O密集型任务D. 任务队列的长度没有上限
在一个使用TaskPool的应用程序中,你发现当任务数量激增时,系统性能没有明显下降。这最可能是因为:
A. 任务的优先级设置为最高
B. 系统自动增加了工作线程的数量
C. 所有任务都是I/O密集型任务
D. 任务队列的长度没有上限
题目解答
答案
B. 系统自动增加了工作线程的数量
解析
考查要点:本题主要考查对线程池工作原理的理解,特别是任务处理能力与线程数量的关系。
解题核心思路:
当任务数量激增时,系统性能未下降,说明任务处理能力能够线性扩展。关键在于分析选项中哪些机制能动态提升并行处理能力。
破题关键点:
- 线程池的自动扩缩容机制是核心。若线程池能根据负载自动增加工作线程,可大幅提升吞吐量。
- I/O密集型任务的处理效率依赖于线程池的优化策略(如异步I/O),但题目未明确说明相关机制,因此非直接答案。
- 队列长度无上限仅解决任务存储问题,无法直接提升处理速度。
选项分析
A. 任务的优先级设置为最高
优先级调整仅改变任务执行顺序,无法增加并行线程数量。若线程池大小固定,高优先级任务仍需排队,无法显著提升性能。
B. 系统自动增加了工作线程的数量
线程池自动扩容是关键。当任务激增时,线程池动态增加工作线程,使更多任务并行执行,直接提升吞吐量。例如,.NET的ThreadPool在高负载下可自动增加线程(需配置允许增长)。
C. 所有任务都是I/O密集型任务
I/O密集型任务若未采用异步处理,会占用线程等待I/O,导致性能下降。若隐含异步优化(如IOCompletionPort),可能提升性能,但题目未明确此条件,因此非直接答案。
D. 任务队列的长度没有上限
队列无限长仅防止任务丢失,但处理速度仍受限于线程数量。若线程数未增加,任务仍会排队,性能可能下降。