如果同时发送大量http请求,如何设置ThreadPoolTask​​Executor?

就我而言,我需要将超过一百万的http请求发送到客户端的应用程序以弹出通知。像下面的sudo代码

int numOfHttpReq = 1000000;
for (int i = 0; i < numOfHttpReq; i++) {
  call async method with ThreadPoolTaskExecutor ...
}

我已经参考了website中的文章,并获得了一个公式

线程数=可用内核数*(1 +等待时间/服务时间)

但是,我认为这不是100%适合我的情况。我想知道在这种情况下如何设置ThreadPoolTask​​Executor,例如CorePoolSize,MaxPoolSize,QueueCapacity等。

iCMS 回答:如果同时发送大量http请求,如何设置ThreadPoolTask​​Executor?

您为什么不看一下这类性能相关测试的“加特林”工具。您不必担心对象池和其他东西只是进食而已,然后您的用例又是什么呢?在一段时间内有多少并发请求/并发用户/ ...其他选项。 Gatling

,

您只需使用ThreadPoolExecutor提供的构造函数就可以很好地做到这一点。

public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue) {
            this(corePoolSize,maximumPoolSize,keepAliveTime,unit,workQueue,Executors.defaultThreadFactory(),defaultHandler);
        }

并且您可以使用辅助线程来调用HttpRequest。

本文链接:https://www.f2er.com/1680138.html

大家都在问