Я не знаю, почему вызов send()
может длиться так долго, но если он слишком медленный для вас, то просто перевести вызов send()
в другой поток:
public class SendThread extends Thread {
private HttpClient client;
private HttpExchange exchange;
public SendThread(HttpClient client, HttpExchange exchange) {
this.client = client;
this.exchange = exchange;
}
@Override
public void run() {
client.send(exchange);
}
}
Тогда вы можете сделать:
new SendThread(client, exchange).start();
... вместо:
client.send(httpExchange);
Если вы хотите попытаться выяснить, почему библиотека занимает так много времени, вы также можете попробовать просмотреть исходный код . На первый взгляд я бы сказал, что 1) то, что делает send()
, не совсем тривиально, и 2) единственное, что кажется асинхронным, - это отправка фактических данных / полезной нагрузки на сервер; такие вещи, как создание начального соединения с сервером, по-видимому, выполняются синхронно как часть вызова send()
.