【发布时间】:2010-11-04 22:46:54
【问题描述】:
在 Java 中创建 FixedThreadPool Executor 对象时,您需要传递一个参数来描述 Executor 可以同时执行的线程数。我正在构建一个服务类,其职责是处理大量电话号码。对于每个电话号码,我需要执行 Web 服务(这是我的瓶颈),然后将响应保存在 hashmap 中。
为了减少这个瓶颈对我的服务性能的危害,我决定创建一个 Worker 类来获取未处理的元素并处理它们。 Worker 类实现了 Runnable 接口,我使用 Executor 运行 Worker。
可以同时运行的Workers数量取决于Executor FixedThreadPool的大小。 ThreadPool 的安全大小是多少?当我使用一些大数字作为参数创建 FixedTheradPool 时会发生什么?
【问题讨论】:
-
你好迈克尔,几点:你认为“大量电话号码”是什么?您的应用程序将运行的系统规格是什么?当使用批处理特定线程时,可用的内存量。计算还考虑了堆和处理器速度。最好的问候,Kam。
-
除此之外,请阅读此处的类比:java.sun.com/docs/books/tutorial/essential/concurrency/… 看看您的应用程序是否适合 FixedThread Pools 的漏洞。
标签: java web-services concurrency threadpool