使用多个HttpURLConnection并行发送的问题?

时间:2017-08-22 18:59:48

标签: java sockets timeout httpurlconnection

目前,我正在设计一个Java模块,用于收集数据并将它们并行发送到相同目标地址上的不同API端点。它们是使用线程并行发送的。

由于它们被发送到相同的目标IP地址,使用HttpURLConnection发送信息时是否会出现问题?我认为他们可能使用相同的基本端口/套接字,即使每个传输使用新的HttpURLConnection对象。

他们最终会被逐一发送出去吗?如果连接存在问题(例如超时),如果每个连接都是逐个发送的,超时会加起来吗?

2 个答案:

答案 0 :(得分:1)

the docs中所述:

Each HttpURLConnection instance is used to make a single request but the
underlying network connection to the HTTP server may be transparently
shared by other instances.

这意味着它可能依赖于您正在使用的JVM。看起来它们可能最终被逐一发送。

答案 1 :(得分:0)

连接是否应该重用的问题是连接池和HttpURLConnection类本身的实现问题。它与JVM无关。

如果我们保持与HttpURLConnection不相关的东西。在一天结束时,一切都转换为套接字(端点)和针对套接字的连接。每个端点可以有多个连接。您的问题的答案是,只要连接没有汇总,它们就不会一个接一个地发送。

本主题详细解释了套接字和连接的概念。我建议阅读它。

What is the difference between a port and a socket?

关于HttpURLConnection的连接池是可行的,并在此详细解释:Java HttpURLConnection and pooling