在服务器上触发异步任务,并在异步任务运行时返回

时间:2016-06-18 18:51:00

标签: java multithreading asynchronous

我在服务器上使用Spring的java平台上。我想做以下

  1. 向触发异步任务的服务器发送http请求。
  2. 在没有
    的情况下触发异步任务后从服务器返回响应 等待异步任务完成。
  3. 我在返回响应时遇到困难,因为异步任务阻止主线程导致异步任务运行时客户端超时。

    任何人都知道有关此功能的示例的任何文章或任何人都有一个小代码片段,可以说明这样做的好方法。

2 个答案:

答案 0 :(得分:0)

您的整体模型方法不一定不正确。

但是以下信息:

  
    

异步任务阻止主线程

  

暗示您的一个假设没有成立:即服务器端能够快速返回状态代码。这是至关重要的:如果服务器在返回立即返回代码之前挂起进行大量处理 - 从而放弃对呼叫者/客户端的控制 - 那么您的客户端将会挂起,如您所见。

因此可能需要以下其中一项:

  • 如果您控制服务器端,则更新服务器端行为以立即返回代码,而不是进行额外处理
  • 如果没有:那么你需要改变你的客户端,甚至不要等待服务器返回任何,然后再继续。

后者意味着您应该从

更改客户端asuyncCode
  • 客户端:启动对服务器的请求
  • 等待服务器返回代码
  • 启动异步回调处理程序以等待来自服务器的完整结果

到:

  • 客户端:启动异步回调处理程序以等待两者来自服务器的初始结果来自服务器的完整结果
  • 客户端主线程:继续其他工作,以免挂起main循环

答案 1 :(得分:0)

通过在我想触发并运行异步的方法上使用spring @Async来解决这个问题。因此,现在请求会触发异步调用并在async任务仍在服务器上运行时立即返回服务器

相关问题