繁体   English   中英

kotlin 协程多重启动

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM