[英]kotlin Coroutine multiple launch
如何在 kotlin 中像多线程一样进行多次启动
我想让first
second
永远在同一时间工作!!
就像这段代码...
runBlocking {
// first
launch{
first()
}
// second
launch{
second()
}
}
suspend fun first(){
// do something
delay(1000L)
// Recursive call
first()
}
suspend fun second(){
// do something
delay(1000L)
// Recursive call
second()
}
如果它是您的应用程序中唯一运行的代码,您的示例代码已经可以工作。 如果您需要这两种方法与您的应用程序并行运行,请将它们包装在GlobalScope.launch
中:
GlobalScope.launch {
launch { first() }
launch { second() }
}
这将永远运行,直到被取消和/或内部抛出异常。 如果您在协程中不需要太多资源,并且在使用时适当地释放它们,那么您应该永远不会遇到 StackOverFlow 的问题。
除了递归代码:尝试按照评论中的建议进行循环。
您可以使用循环实现无限执行
runBlocking {
launch { while(true) first() }
launch { while(true) second() }
}
suspend fun first(){
// do something
delay(1000L)
}
suspend fun second(){
// do something
delay(1000L)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.