首页 > 解决方案 > 可以在 Kotlin 中暂停 main 功能吗?

问题描述

我是 Kotlin 协程的新手,之前没有使用过它。现在我有一个项目正在大量使用它,并且是一个 Spring Boot 项目。我注意到引导 SpringBootApp 它自己的主要功能被标记为挂起,下面的等效代码:

@SpringBootApplication
class SomeClass

    fun main() {
        val someListener = SpringApplication
            .run(SomeClass::class.java)
            .getBean(AotherClass::class.java)

        while (true) {
            someListener.readSomething()
        }
    }

当然,这个readSomething函数本身就是一个挂起函数,基本上从某个队列中读取消息。我的问题是是否应该暂停主要功能,因为据我认为不应该,我应该将 readSomething 包装在runBlocking块中,但我不确定。我预感这是错误的原因是因为如果我将暂停保留在那里,IntelliJ 不允许 SpringBoot 运行配置。

任何解释在这里都会有所帮助。

标签: spring-bootkotlinkotlin-coroutines

解决方案


推荐阅读