我有一个 java 应用程序,它向服务器发送请求并返回响应。每个请求都在单独的线程上运行。
我想要做的是一次维护 5 个线程(因此,一次有 5 个请求)。此外,如果一个线程完成,我想启动一个新线程,以便始终运行 5 个线程。
最初我以为我可以在调用线程时使用 join,但意识到这会阻塞我的主线程。
有没有办法做到这一点?我没有太多使用 Java 编程,并且愿意接受任何建议/建议。
我有一个 java 应用程序,它向服务器发送请求并返回响应。每个请求都在单独的线程上运行。
我想要做的是一次维护 5 个线程(因此,一次有 5 个请求)。此外,如果一个线程完成,我想启动一个新线程,以便始终运行 5 个线程。
最初我以为我可以在调用线程时使用 join,但意识到这会阻塞我的主线程。
有没有办法做到这一点?我没有太多使用 Java 编程,并且愿意接受任何建议/建议。
我会使用 ExecutorService
Executor exec = Executors.newFixedThreadPool(5);
for(String url: urls)
exec.submit(new UrlTask(urls));
// when finished
exec.shutdown();
这将一次执行多达 5 个任务。
看来您正在寻找具有固定线程池的ExecutorService 之类的东西。
ExecutorService pool = Executors.newFixedThreadPool(5);
您不应该尝试使用Thread
.
我建议设置一个Executor
池并使用BlockingDeque
.