Java 如果同时发送多个http请求,如何设置ThreadPoolTaskExecutor?
在我的例子中,我需要向客户端的应用程序发送超过百万个http请求以获得弹出通知。就像下面的sudo代码一样Java 如果同时发送多个http请求,如何设置ThreadPoolTaskExecutor?,java,multithreading,executor,Java,Multithreading,Executor,在我的例子中,我需要向客户端的应用程序发送超过百万个http请求以获得弹出通知。就像下面的sudo代码一样 int numOfHttpReq = 1000000; for (int i = 0; i < numOfHttpReq; i++) { call async method with ThreadPoolTaskExecutor ... } int numohttpreq=1000000; for(int i=0;i
int numOfHttpReq = 1000000;
for (int i = 0; i < numOfHttpReq; i++) {
call async method with ThreadPoolTaskExecutor ...
}
int numohttpreq=1000000;
for(int i=0;i
我引用了这篇文章,得到了一个公式
线程数=可用内核数*(1+等待时间/服务时间)
然而,我认为它不是100%适合我的情况。我想知道在这种情况下如何设置ThreadPoolTaskExecutor,如CorePoolSize、MaxPoolSize、QueueCapacity等。您只需使用ThreadPoolExecutor提供的构造函数就可以很好地完成这项工作
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue) {
this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
Executors.defaultThreadFactory(), defaultHandler);
}
public ThreadPoolExecutor(int-corePoolSize,
int maximumPoolSize,
长时间,
时间单位,
阻塞队列(工作队列){
这(corePoolSize、maximumPoolSize、keepAliveTime、unit、workQueue、,
Executors.defaultThreadFactory(),defaultHandler);
}
您可以使用工作线程来调用HttpRequest。只需使用ThreadPoolExecutor提供的构造函数,就可以很好地实现这一点
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue) {
this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
Executors.defaultThreadFactory(), defaultHandler);
}
public ThreadPoolExecutor(int-corePoolSize,
int maximumPoolSize,
长时间,
时间单位,
阻塞队列(工作队列){
这(corePoolSize、maximumPoolSize、keepAliveTime、unit、workQueue、,
Executors.defaultThreadFactory(),defaultHandler);
}
您可以使用worker线程调用HttpRequest。为什么不看看用于这些性能相关测试的“Gatling”工具呢。您不必担心对象池和其他内容,只需输入,那么在时间跨度内您的用例是什么样的?有多少并发请求/并发用户/…还有其他选项。
为什么不看看用于此类性能相关测试的“Gatling”工具呢。您不必担心对象池和其他内容,只需输入,那么在时间跨度内您的用例是什么样的?有多少并发请求/并发用户/…还有其他选项。
谢谢你的建议。你的意思是没有必要使用ThreadPoolTaskExecutor吗?是的,你不必担心threadpool相关的东西,这些东西将由gatling内部处理。您只需在其中编写rest调用,并将其配置为请求数/并发访问的用户数/如果需要间隔,则也可以。只需查看它的文档就可以了。非常简单。谢谢你的建议。你的意思是没有必要使用ThreadPoolTaskExecutor吗?是的,你不必担心threadpool相关的东西,这些东西将由gatling内部处理。您只需在其中编写rest调用,并将其配置为请求数/并发访问的用户数/如果需要间隔,则也可以。只需签出它的文档,这很简单。