当几个协程运行时,不要退出Kotlin程序

在我的程序的几个地方,我使用launch来启动一个协同工作,做一些后台任务。 然后,在某个时候,我从main函数返回。 我的程序的简化版本可能如下所示:

 fun main(args : Array) { launch { delay(10000) // some long running operation println("finished") } } 

现在,协程按预期启动并开始运行 – 然后程序退出。 如果我不从main返回或用thread替换launch ,一切都按预期工作。 所以我怎么能 ,因为我没有跟踪在我的程序中启动的所有协程(因此我不能使用.join().await() ), 确保所有的协程在我的程序退出之前完成?

所以我怎么能,因为我没有跟踪在我的程序中启动的所有协程(因此我不能使用.join()或.await()),确保所有的协程在我的程序退出之前完成?

您需要保持跟踪并等待某些时候的结果,以确保这些协程已经完成。 这是因为“协程就像守护线程”:

主动协程不会使进程保持活跃状态​​。 它们就像守护线程一样。

常规Java Thread默认情况下不是非守护进程 。