Java 使用多个HttpURLConnection并行发送时出现的问题?
目前,我正在用Java设计一个模块,用于收集数据,并在同一目标地址上的不同API端点上并行发送数据。它们是使用线程并行发送的 因为它们被发送到相同的目标IP地址,所以使用Java 使用多个HttpURLConnection并行发送时出现的问题?,java,sockets,timeout,httpurlconnection,Java,Sockets,Timeout,Httpurlconnection,目前,我正在用Java设计一个模块,用于收集数据,并在同一目标地址上的不同API端点上并行发送数据。它们是使用线程并行发送的 因为它们被发送到相同的目标IP地址,所以使用HttpURLConnection发送信息时是否会出现问题?我认为它们可能使用相同的基本端口/套接字,即使每个传输都使用一个新的HttpURLConnection对象 它们最终会被一个接一个地发送吗?如果连接出现问题(例如超时),如果一个接一个地发送超时,每个连接的超时是否会累加?如中所述: 这意味着它可能取决于您正在使用的JV
HttpURLConnection
发送信息时是否会出现问题?我认为它们可能使用相同的基本端口/套接字,即使每个传输都使用一个新的HttpURLConnection
对象
它们最终会被一个接一个地发送吗?如果连接出现问题(例如超时),如果一个接一个地发送超时,每个连接的超时是否会累加?如中所述:
这意味着它可能取决于您正在使用的JVM。看起来它们可能会一个接一个地被发送。连接是否应该被重用的问题是连接池和HttpURLConnection类本身的实现问题。它与JVM无关 如果我们保持HttpURLConnection中的内容不可知,那么在一天结束时,所有内容都转换为套接字(端点)和以套接字为目标的连接。每个端点可以有多个连接。您的问题的答案是,只要连接未合并,就不会逐个发送它们 本主题详细解释套接字和连接的概念。我建议你读一读
不过,关于HttpURLConnection的连接池是可能的,并在此处进行了详细说明:您能看看上面的
bezet
的答案吗?这就是我所指的,我很谨慎,他们都使用相同的底层连接。@stoneman_41我不认为连接的重用与JVM有任何关系。如果重新使用连接,则是HttpURLConnection本身的实现问题,而不是底层JVM的实现问题。如果使用连接池,则可能发生连接共享。同样,与JVM无关。我仍然支持我的回答。
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.