【发布时间】:2011-06-13 14:32:06
【问题描述】:
在 Web 服务环境中,我想针对我的应用程序收到的每个请求进行一些独立的 http 调用。由于这些调用是独立的,因此将它们串行进行是没有意义的,因此我需要一种并发性。
据我了解,不小心为每个 http 调用创建新线程是没有意义的。而且,重新创建所有这些线程会带来很多开销。
所以我认为我最好的选择是在单例中为所有 http 调用创建一个 FixedThreadPool 并在整个应用程序中使用它。
这是最好的选择吗?
【问题讨论】:
-
您是否使用任何特定的网络服务器?大多数网络服务器都会为您执行此操作。例如,Tomcat 已经有一个固定的线程池,并且会从该池中为每个请求分配线程。
-
拥有一个 FixedThreadPool(或任何并发工具)来进行 Http 服务调用是一个巨大的矫枉过正。为什么要为这样的操作执行线程。
-
@doc_180:我是并发新手,所以请尝试你的替代方案。
-
@rodion:我正在使用 Jetty,我观察到调用是串行进行的。
-
嗯,Tomcat分配固定线程池不会发生在客户端,是吗?我相信他正在尝试创建一个 Rest Client 并希望使用 FixedThreadPool 进行 http 调用。如果它非常重要,我将使用 Spring REST Template 之类的框架来实现我的客户端。)
标签: java multithreading scala threadpool