如何以异步方式发出Web请求

时间:2011-04-04 18:37:54

标签: java asynchronous

我需要从Java向RESTful服务器发出Web请求。我想让我的Java代码异步处理响应。我正在寻找一个处理请求的线程和回调的框架。

顺便说一句,我看了一下FutureTask,它似乎并不是我需要的,因为它要求客户端在某个时候等待它完成。我正在寻找完成后的回调。

3 个答案:

答案 0 :(得分:3)

  

顺便说一下,我看了一下FutureTask,它似乎不是我需要的,因为它要求客户端在某个时候等待它完成。

您不必从发起线程调用FutureTask.get()以获取任务的结果。您可以将Callable传递给FutureTask,同时将其输出传递给其他组件。有get()方法,以便您可以获得异步计算的结果,这可能涉及等待计算完成(如果尚未完成)。

如果你更喜欢回调样式,你可以简单地让Callable调用你自己构造的回调或者自己处理结果。

答案 1 :(得分:1)

使用Observer Pattern

可以在java中轻松解决这个问题
  • 创建扩展Observable并实现Runnable
  • 的类
  • 实例化,将URL传递给它。
  • 主要对象实现Observer,向新类注册为观察者
  • 运行您的Runnable,它会阻止HttpUrlConneciton,完成后通知观察者
  • 根据需要重复。

答案 2 :(得分:0)

在GitHub上查看ning async http客户端项目。它为您提供了使用Future的选项,或者为请求完成时定义回调:

https://github.com/sonatype/async-http-client