0

我正在调用一个 Spring Web 服务,它需要大约 5 秒才能返回响应。webservice 调用在部署到 websphere 之前发生在 Tomcat 容器中。另一位开发人员告诉我,对这个服务的调用应该在一个单独的 java 线程中处理,因为它“让 JVM 在一行代码上停留太久的坏习惯”在这种情况下它停留在调用 Web 服务的代码。我不同意,并认为如果 Web 服务需要 5 或 10 秒才能完成,那很好,将收到响应并且代码执行将照常继续。我对吗 ?

4

2 回答 2

2

我提出两点:

  1. 如果后续计算依赖于该 Web 服务的结果,那么无论如何您都别无选择,并且产生一个新线程只是浪费资源;

  2. 如果此调用是完全独立的,那么可能有充分的理由将其卸载到单独的线程。即使五秒钟本身并不多,这可能不是(现在或将来您的代码库的)系统毫无意义地等待独立任务完成的唯一点。让独立任务独立运行通常是一种很好的做法

但是,如果您的调用是在部署到 Tomcat 容器中的应用程序中发生的(这个细节在您的问题中并不完全清楚),那么Web 应用程序产生自己的子线程通常是一种不好的做法。任务应该提交给容器提供的执行器服务(如果有的话)。

于 2013-08-16T11:03:40.827 回答
0

同步调用 web 服务是个坏主意,它可能在集成或测试环境中工作,但响应会随着系统负载的增加而呈指数增长。你应该看看某种异步通信。

在我们的项目中,我们习惯了很多同步通信,都被重写为异步。

于 2013-08-16T11:07:34.907 回答