gpt4 book ai didi

multithreading - resttemplate.exchange()如何在不同的线程上执行?

转载 作者:行者123 更新时间:2023-12-03 12:58:58 28 4
gpt4 key购买 nike

据我了解,对resttemplate交换方法的调用在不同的线程上执行。基本上所有客户端库都在不同的线程上执行。

假设我的servlet容器是tomcat。当向公开的端点发出请求时,tomcat线程接收到该请求,并且该请求从同一线程上的 Controller 层到达服务层。在服务层中,我使用resttemplate调用了第三者服务。调用exchange方法时,该操作在内部在不同的线程上运行并获取该操作的结果。

我对此有一个疑问:

resttemplate基本上从哪里从哪个线程池中获取线程以在另一个线程上执行?

我想知道在不同的线程上执行resttemplate是否必须与tomcat线程池做任何事情。

有人能对此有所启发吗?

最佳答案

When a request is made to the endpoint exposed, tomcat thread recieves the request and the request comes to service layer from controller layer on the same thread.



仅当tomcat和Java应用程序在同一JVM中(例如在嵌入式tomcat中)时,才会发生这种情况。否则,默认情况下,将创建和销毁Java线程而不对其进行池化。当然,您也可以创建一个Java线程池。

每次通过RestTemplate调用第三方API时,它将创建新的Httpconnection,并在完成后将其关闭。您可以使用 HttpComponentsClientHttpRequestFactory创建RestTemplate自己的连接池,如下所示:
new org.springframework.web.client.RestTemplate(new HttpComponentsClientHttpRequestFactory())

关于multithreading - resttemplate.exchange()如何在不同的线程上执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55321329/

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