Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java RestTemplate是否同步REST调用?_Java_Spring_Spring Rest - Fatal编程技术网

Java RestTemplate是否同步REST调用?

Java RestTemplate是否同步REST调用?,java,spring,spring-rest,Java,Spring,Spring Rest,我对RestTemplate有一点很好奇。假设我有一个普通的Spring单例组件beanRestService,使用dummy方法: @Component public class RestService { private final RestTemplate restTemplate; public String performRequest(HttpEntity request, URI url) { return restTemplate.exchange(ur

我对RestTemplate有一点很好奇。假设我有一个普通的Spring单例组件bean
RestService
,使用dummy方法:

@Component
public class RestService {
   private final RestTemplate restTemplate;

   public String performRequest(HttpEntity request, URI url) {
      return restTemplate.exchange(url, HttpMethod.POST, request, String.class);
   }
}
现在,thread
thread-1
与这个bean交互并等待rest响应。这是否意味着渴望通过这个bean发出另一个请求的任何其他线程都将被卡住,直到
thread-1
释放
restemplate
?我试图在下面的数字上呈现流程

thread-1 ..request....execution..................response..
thread-N ---------request.......wait..............start execution...


换句话说。将此类服务与多线程调用一起使用可以吗?它的工作方式是否如图1或图2所示?

restTemplate
是线程安全的(带有免责声明),因此您可以在多个用户之间共享一个服务,就像您在代码中所做的那样。他们不需要等待对方,事实上他们甚至不知道是否有其他请求同时执行

类的javadoc没有描述它是线程安全的,但是代码只使用局部变量,因此没有共享状态可供竞争


免责声明:它并非完全没有共享状态,因为您可以配置一些东西,如
setMessageConverters()
setErrorHandler()
等,但这些应该只配置一次。执行网络操作的实际方法是线程安全的。

restemplate
是线程安全的(带有免责声明),因此您可以在多个用户之间共享一个,就像您在代码中所做的那样。他们不需要等待对方,事实上他们甚至不知道是否有其他请求同时执行

类的javadoc没有描述它是线程安全的,但是代码只使用局部变量,因此没有共享状态可供竞争


免责声明:它并非完全没有共享状态,因为您可以配置一些东西,如
setMessageConverters()
setErrorHandler()
等,但这些应该只配置一次。进行网络操作的实际方法是线程安全的。

回答得很好,谢谢!这正是我想知道的。回答得很好,谢谢!这正是我想知道的。
thread-1 ..request....execution..................response..
thread-N ---------request.......execution....response...