kotlin协程在while循环中等待

kotlin coroutine wait in while loop

我有一个无限循环

runBlocking(
        context = Dispatchers.IO
    ) {
        while (true) {
            launch(
                context = exceptionHandler
            ) {
                println("time reached")
                delay(
                    timeMillis = 3_600_000
                )
            }
        }
    }

我希望 while 每隔一小时打印一次“到达时间”。

但是当我 运行 程序时,控制台无限地打印“time reached”!

我该如何解决

您可以通过将 while 循环移动到协程构建器中来修复它:

runBlocking(context = Dispatchers.IO) {
    launch(context = exceptionHandler) {
         while (true) {
             println("time reached")
             delay(timeMillis = 3_600_000)
         }
    }
}