当几个协程运行时,不要退出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
默认情况下不是非守护进程 。