接深入浅出多线程系列4,
线程对象的创建和销毁是需要花费系统资源的,通过线程池,可以避免该问 题并提高系统的响应时间。这种情形类似我们常提到的数据库连接池。
线程池的广泛应用使得在SUN在JDK 1.5的工具包提供了线程池的支持。我计 划将该系列分为设计需求与设计实现两个部分。这样会更加清晰。如果想要熟悉 ,并熟练应用线程池,那么通过设计需求篇也就是该篇就可以找到答案。如果想 探究实现的细节,那么在设计实现篇会有深入的说明。
本文以Concurrent包线程池设计为例,讨论线程池的设计。
线程池需求
设计与实现的最终目标是满足需求,这是软件开发的基本原则。我们先考虑 考虑对线程池的需求。作为一名开发人员,我们最主要的需求就是线程池简单, 易用。即使你的设计算法多么优雅,但给使用者复杂的使用步骤也是得不偿失, 简单就是美!最好我们不用深究你的具体实现,通过简单的接口就可以应用。其 次就是技术角度,线程池的设计应该是比较柔性的,提供很好的可配置可管理与 可扩张性。
对于可配置可管理的需求,至少的提供以下的功能点:
线程池里,线程数量的配置。
能够提供动态调整线程的数量。
能够Shutdown 最好能够提供优雅的Shundown,而不是像我们通过切断电源关 闭机器那样粗暴的Shutdown。
能够提供Task的状态,比如完成了多少,还有多少没有完成。
对于可扩展性而言有以下几点:
如果不能满足需要能够很容易的扩展。
对于线程池线程的创建能否提够扩展。
当提交的Task负载过大时,线程池的处理策略能否扩展。
以上是对线程池的需求的讨论。
时间: 2024-11-03 18:40:24