簡體   English   中英

Kotlin 暫停 function 從 Java 調用時延遲后未執行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM