2011-04-04 24 views
1

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

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

回答

3

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

你不呼叫FutureTask.get()从发起线程,以获取任务的结果。您可以将Callable传递给FutureTask也处理将其输出传递给其他组件。 get()方法在那里,以便您可以得到异步计算的结果,这可能涉及等待计算完成,如果它尚未完成。

如果您希望回调风格,你可以简单地有赎回调用自己构造的回调或处理它自己的结果。

+0

这是一个很好的建议和有意义。我遇到了ThreadPoolExecutor类,它似乎提供了类似的功能。 FutureTask有一个线程,还是使用线程池? – 2011-04-04 19:25:51

+0

FutureTask基本上只是围绕Callable进行打包,旨在被ExecutorService(或类似的服务)使用。 – 2011-04-05 00:15:02

1

这是Java迎刃而解与观察者模式

  • 创建扩展Observable并实现Runnable
  • 实例化类,URL传递给它。
  • 主要对象实现Observer,与新类注册为观察员
  • 运行您的Runnable,它阻挡HttpUrlConneciton,
  • 必要时重复进行通知时,与结果的观察者。