在Java中一次保持5个线程

时间:2013-02-04 15:49:14

标签: java multithreading

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

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

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

有没有办法完成这项工作?我没有用Java编程,并且对任何建议/建议持开放态度。

3 个答案:

答案 0 :(得分:7)

我会使用ExecutorService

Executor exec = Executors.newFixedThreadPool(5);

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

// when finished
exec.shutdown();

这将同时执行最多5个任务。

答案 1 :(得分:3)

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

ExecutorService  pool = Executors.newFixedThreadPool(5);

答案 2 :(得分:1)

您不应该尝试使用Thread从头开始编写此代码。

我建议设置一个Executor池并使用BlockingDeque执行producer/consumer