问题描述
就我而言,我需要将超过一百万的http请求发送到客户端的应用程序以弹出通知。像下面的sudo代码
int numOfHttpReq = 1000000;
for (int i = 0; i < numOfHttpReq; i++) {
call async method with ThreadPoolTaskExecutor ...
}
线程数=可用内核数*(1 +等待时间/服务时间)
但是,我认为这不是100%适合我的情况。我想知道在这种情况下如何设置ThreadPoolTaskExecutor,例如CorePoolSize,MaxPoolSize,QueueCapacity等。
解决方法
您为什么不看一下这类性能相关测试的“加特林”工具。您不必担心对象池和其他东西只是进食而已,然后您的用例又是什么呢?在一段时间内有多少并发请求/并发用户/ ...其他选项。 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。