1

我有一个 java 应用程序,它向服务器发送请求并返回响应。每个请求都在单独的线程上运行。

我想要做的是一次维护 5 个线程(因此,一次有 5 个请求)。此外,如果一个线程完成,我想启动一个新线程,以便始终运行 5 个线程。

最初我以为我可以在调用线程时使用 join,但意识到这会阻塞我的主线程。

有没有办法做到这一点?我没有太多使用 Java 编程,并且愿意接受任何建议/建议。

4

3 回答 3

7

我会使用 ExecutorService

Executor exec = Executors.newFixedThreadPool(5);

for(String url: urls) 
   exec.submit(new UrlTask(urls));

// when finished
exec.shutdown();

这将一次执行多达 5 个任务。

于 2013-02-04T15:51:14.253 回答
3

看来您正在寻找具有固定线程池的ExecutorService 之类的东西。

ExecutorService  pool = Executors.newFixedThreadPool(5);
于 2013-02-04T15:50:41.407 回答
1

您不应该尝试使用Thread.

我建议设置一个Executor池并使用BlockingDeque.

于 2013-02-04T15:50:31.587 回答