java - 等待服务返回的坏习惯?

标签 java multithreading spring tomcat websphere

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

最佳答案

我想说两点:

  1. 如果后续计算依赖于该 Web 服务的结果,那么您就别无选择,生成新线程只会浪费资源;

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

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

关于java - 等待服务返回的坏习惯?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18271655/

相关文章:

java - 根据要注入(inject)的对象注入(inject)值

java - 将数组的大小传递给方法

java - Java Spring 中受控的 ThreadPoolExecutor

c# - 线程顺序同步

java - 未生成 hibernate 序列

java - Spring security - 指定顺序时多个 httpsecurity 不起作用

java - hibernate 过滤器在 session.get() 的情况下不起作用,但在 session.createQuery() 的情况下起作用

java - VideoView在线缓冲区android旋转 handle

java - Java 中的字符串数组

java - 多线程访问创建后不修改的 map 对象