java - 求Java标准库中异步方法的例子
问题描述
我想在 Java 标准库中找到一个方法的示例,该方法将回调作为参数,立即返回,并在完成任务时调用回调。例如,您可以想象一种从键盘获取用户输入的方法,该方法立即返回,但在输入输入后调用回调。
下一个最好的方法是在完成任务时调用侦听器。Android SDK 中的一个示例是SoundPool.load()
和SoundPool.setOnLoadCompleteListener()
。
我不认为 Swing 方法addActionListener()
是示例,因为该方法的目的是添加侦听器。触发事件是完全独立的。
我的动机是准备关于 Java I/O 的讲座,并希望对比以下方法:(1) 阻塞,(2) 有或没有数据立即返回,或 (3) 使用回调。
解决方案
Java 标准库通常使用Future
抽象而不是回调作为核心构建块。如果要构建“基于回调”的结构,则可以使用(通常)then*
上的方法。CompletionStage
CompletableFuture
这种结构允许调用者如何处理异步结果的灵活性;例如,我在用于构建复合结果的多个下游 API 调用上使用它进行分散收集。
推荐阅读
- xml - 使用 XSLT 基于条件将 XML 节点属性动态传递给其他节点
- linux - 将 dd 映像写入 NFS (AWS EFS)
- ruby-on-rails - 循环中的值总和并保持最高值
- javascript - 变量似乎未定义和同时定义?
- jenkins - Bitbucket PR builder Job 没有被触发
- ruby-on-rails - smart_listing gem 的问题:ExecJS::RuntimeError
- .net - 如何使用 EntityFramework 上的表名获取类名
- javascript - 在基于当前计算新状态时,我是否应该始终使用功能 setState
- ibm-watson - 在 IBM Watson Assistant 中检查输入是否属于意图列表
- sql - 最小的有效 sql server 语句