gpt4 book ai didi

java - 无法在 RequestConfig 中将套接字超时设置为小于 1000 毫秒(Apache HTTP 异步客户端 4.1.2)

转载 作者:搜寻专家 更新时间:2023-10-31 19:37:16 24 4
gpt4 key购买 nike

以下是我的代码

       RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(100)
.setConnectTimeout(100)
.setConnectionRequestTimeout(100).build();


CloseableHttpAsyncClient httpClient = HttpAsyncClients.custom()
.setDefaultRequestConfig(requestConfig)
.build();

httpClient.start();

根据 setSocketTimeout 值,它应该在 100 毫秒内超时,但它需要 1000 毫秒才能超时。不过,setSocketTimeout 接受所有大于 1000 毫秒的值。

最佳答案

此行为是故意的。 I/O 选择器线程需要定期迭代现有的 I/O session ,并在 I/O 不活动时触发套接字超时事件。此操作可能会变得非常昂贵,尤其是随着并发 session 数量的增长。默认情况下,i/o 选择间隔设置为 1000 毫秒,因此套接字超时的粒度默认为 1 秒。可以减少选择间隔并使 i/o 选择器线程以更高的 CPU 利用率为代价更频繁地迭代 session 。选择间隔为 1 毫秒的 i/o 选择器线程将有效地在繁忙的循环中运行。

IOReactorConfig ioReactorConfig = IOReactorConfig.custom()
.setSelectInterval(100)
.setSoTimeout(100)
.setConnectTimeout(100)
.build();
CloseableHttpAsyncClient httpClient = HttpAsyncClients.custom()
.setDefaultIOReactorConfig(ioReactorConfig)
.build();

关于java - 无法在 RequestConfig 中将套接字超时设置为小于 1000 毫秒(Apache HTTP 异步客户端 4.1.2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38178473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com