java - 如何在 Java 中使用 Kotlin Deferred (Coroutine) 对象?
问题描述
我有一些 Java 代码在某些时候需要暂停并等待结果。我正在尝试使用 Kotlin Coroutines 解决这个问题。
BuilderKt 的异步方法允许我成功地将工作传递到后台。但我不清楚如何进行非阻塞等待结果。
这是我设置工作的方式(并获得延期):
Deferred<T> deferred = BuildersKt.async(GlobalScope.INSTANCE, Dispatchers.getIO(), CoroutineStart.DEFAULT, new Function2<CoroutineScope, Continuation<? super T>, T>() {
@Override
public T invoke(CoroutineScope coroutineScope, Continuation<? super T> continuation) {
return /* Do some work and return a T */;
}
});
我遇到问题的部分是等待需要继续并且什么也不返回
deferred.await(new Continuation<T>() {
@NotNull
@Override
public CoroutineContext getContext() {
return ???;
}
@Override
public void resumeWith(@NotNull Object o) {
???
}
});
如果我不能让它做一个非阻塞等待,我需要继续轮询以检查它是否完整,这显然不是正确的方法。我错过了这个难题的哪些部分?
Kotlin 文档没有关于如何将它与 Java 一起使用的示例,并且没有用于后续方法的有用 javadoc
解决方案
推荐阅读
- gatsby - Gatsby 的 addThirdPartySchema 问题
- c# - 在 StorageFolder 中创建文件
- css - 如何根据文本长度应用渐变色文本?
- java - 在一行中的两个标签之间替换或重命名字符串并在java中作为字符串返回
- python - 当我在按下按钮 1 后单击按钮 2 时,它不起作用
- python - 我想在 def 中分配新变量
- amazon-web-services - 应用转换错误后 QuickSight 无法生成任何输出列
- bash - 在bash脚本的While循环中比较IF条件中的两个变量
- r - R sf:查找多个重叠多边形之外的多边形
- xcode - Xcode 12 和 Apple Silicon