如何从for循环中的Java发送POST请求

问题描述 投票:-3回答:1

我有一个循环,它发送一个POST请求到URL。对于列表中的每个客户端ID,我必须提出请求。但这是按顺序完成的。什么是获得并行和更快的请求的最佳方式。

我可以选择在数组中发送请求作为JSON,但它给了我不合需要的输出。

    for (int i = 0; i < Clients.clients.size(); i++){
         String itemIdHistory = URLResponseGetPost.postRequest(Resources.COMPANY_ZABBIX_URL, itemIdJsonResponse);
    }
java json multithreading rest parallel-processing
1个回答
3
投票

你应该看看ExecutorServicehttps://docs.oracle.com/javase/9/docs/api/java/util/concurrent/ExecutorService.html

这是一个例子:

ExecutorService executorService = Executors.newSingleThreadExecutor();
Set<Callable<String>> callables = new HashSet<Callable<String>>();
callables.add(new Callable<String>() {
    public String call() throws Exception {
        return "Task 1";
    }
});
callables.add(new Callable<String>() {
    public String call() throws Exception {
        return "Task 2";
    }
});
callables.add(new Callable<String>() {
    public String call() throws Exception {
        return "Task 3";
    }
});

List<Future<String>> futures = executorService.invokeAll(callables);
for(Future<String> future : futures){
    System.out.println("future.get = " + future.get());
}
executorService.shutdown();

要并行运行,请考虑使用具有更多线程的线程池:https://docs.oracle.com/javase/9/docs/api/java/util/concurrent/Executors.html#newFixedThreadPool-int-

© www.soinside.com 2019 - 2024. All rights reserved.