httpclient多线程
时间: 2023-09-04 16:06:29 浏览: 51
HttpClient 是一个多线程安全的 HTTP 客户端库,可以在多个线程中共享一个 HttpClient 实例。在使用 HttpClient 发起 HTTP 请求时,可以使用多线程来提高请求处理的效率。
下面是使用 HttpClient 进行多线程请求的示例代码:
```java
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClientBuilder;
public class HttpMultiThread {
public static void main(String[] args) throws Exception {
HttpClient httpClient = HttpClientBuilder.create().build();
ExecutorService executorService = Executors.newFixedThreadPool(10);
for (int i = 0; i < 100; i++) {
executorService.execute(new HttpGetRequest(httpClient));
}
executorService.shutdown();
}
private static class HttpGetRequest implements Runnable {
private HttpClient httpClient;
public HttpGetRequest(HttpClient httpClient) {
this.httpClient = httpClient;
}
@Override
public void run() {
HttpGet httpGet = new HttpGet("https://www.baidu.com");
try {
httpClient.execute(httpGet);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
```
在上述代码中,我们使用了 ExecutorService 来创建一个固定大小的线程池,并将多个 HttpGetRequest 任务提交给线程池执行。在每个 HttpGetRequest 任务中,我们创建一个 HttpGet 请求,并使用 HttpClient 发起请求。
需要注意的是,HttpClient 的实例应该在多个线程之间共享,因此我们在 main 方法中创建了一个 HttpClient 实例,并将其传递给每个 HttpGetRequest 任务。同时,在使用 HttpClient 发起请求时,应该保证线程安全,避免多个线程同时使用同一个 HttpGet 实例。