[英]Kotlin suspend function not executing after delay when called from Java
我試圖從我的 Java class 中調用這個 Kotlin 暫停代碼。 該解決方案基於此處提到的內容。 https://stackoverflow.com/a/52887677/5140533
Kotlin 代碼:
Main.kt
suspend fun doWorld() = coroutineScope {
launch {
println("Thread name2 ${Thread.currentThread().name}")
delay(2000L)
println("Hello world")
}
}
@OptIn(DelicateCoroutinesApi::class)
fun doSomethingAsync() =
GlobalScope.future { doWorld() }
Converter.java
public class Converter {
public static void main(String[] args) {
MainKt.doSomethingAsync();
}
}
當我從 Java class 調用doSomethingAsync()
時,我看不到任何打印語句。 有人可以解釋一下到底發生了什么以及我如何糾正這個問題。
我認為在您的情況下,程序在新的協程開始之前完成。 在調用MainKt.doSomethingAsync()
之后嘗試在main
function 中延遲當前Main Thread
:
public class Converter {
public static void main(String[] args) {
MainKt.doSomethingAsync();
try {
TimeUnit.MILLISECONDS.sleep(2500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.