Java 如何以异步方式发出web请求
我需要从Java向RESTful服务器发出web请求。我希望我的Java代码能够异步处理响应。我正在寻找一个处理线程和请求回调的框架Java 如何以异步方式发出web请求,java,asynchronous,Java,Asynchronous,我需要从Java向RESTful服务器发出web请求。我希望我的Java代码能够异步处理响应。我正在寻找一个处理线程和请求回调的框架 顺便说一句,我看了一下FutureTask,它似乎不是我所需要的,因为它需要客户机等待它在某个时候完成。我正在寻找一个完成后的回调。这在java中很容易用Observer模式解决 创建扩展Observable并实现Runnable 实例化,将URL传递给它 主对象实现了观测者,将新类注册为观测者 运行Runnable,它执行阻塞HttpUrlConneciton
顺便说一句,我看了一下FutureTask,它似乎不是我所需要的,因为它需要客户机等待它在某个时候完成。我正在寻找一个完成后的回调。这在java中很容易用Observer模式解决
- 创建扩展
并实现Observable
Runnable
- 实例化,将URL传递给它
- 主对象实现了观测者,将新类注册为观测者
- 运行Runnable,它执行阻塞HttpUrlConneciton,完成后将结果通知观察者
- 必要时重复
- 创建扩展
并实现Observable
Runnable
- 实例化,将URL传递给它
- 主对象实现了观测者,将新类注册为观测者
- 运行Runnable,它执行阻塞HttpUrlConneciton,完成后将结果通知观察者
- 必要时重复
Callable
传递给FutureTask
并处理将其输出传递给其他组件的过程。这里有get()
方法,您可以获得异步计算的结果,如果计算尚未完成,则可能需要等待计算完成
如果您更喜欢回调样式,只需让可调用调用调用自己构造的回调或自己处理结果即可
顺便说一句,我看了一下FutureTask,它似乎不是我所需要的,因为它需要客户机等待它在某个时候完成
您不必从启动线程调用FutureTask.get()来获得任务的结果。您可以将Callable
传递给FutureTask
并处理将其输出传递给其他组件的过程。这里有get()
方法,您可以获得异步计算的结果,如果计算尚未完成,则可能需要等待计算完成
如果您喜欢回调样式,只需让可调用调用调用自己构造的回调或自己处理结果。查看GitHub上的ning async http客户端项目。它为您提供了在请求完成时使用未来或定义回调的选项:
查看GitHub上的ning异步http客户端项目。它为您提供了在请求完成时使用未来或定义回调的选项:
这是一个很好的建议,很有意义。我遇到了ThreadPoolExecutor类,它似乎提供了类似的功能。FutureTask有一个线程,还是使用一个线程池?FutureTask基本上只是围绕一个可调用的线程,并打算由ExecutorService(或类似的服务)使用。这是一个很好的建议,也是有意义的。我遇到了ThreadPoolExecutor类,它似乎提供了类似的功能。FutureTask有一个线程,还是使用一个线程池?FutureTask基本上只是围绕一个可调用的线程,并打算由ExecutorService(或类似的服务)使用。