写定时任务出现的一些问题()
-
今天试图用Timer写定时任务,然后出现了一个严重的问题:部分函数只能协程或者suspend函数调用(比如说sendMessage)。
但是Timer中函数貌似不能suspend()
想问一下各位大佬,这种问题怎么解决()
我目前的解决方法太过暴力(),就是每秒读取一下系统时间做匹配,但是还是试图找到一种高效的方法 -
我是用springboot+mirai-core实现bot的,用最简单的@Scheduled的默认配置 进行同步定时任务发消息(即最后调用sendMessage)是没问题的。
-
@藤原白叶
你给 suspend 函数 套一层 launch 不就行了吗 -
public object MyPlugin : KotlinPlugin() { private val scheduler = Executors.newScheduledThreadPool(2) private suspend fun supFunc() { logger.info { "!" } } private fun timers() { // Way 1 scheduler.submit { runBlocking { supFunc() } } // Way 2 scheduler.submit { MyPlugin.launch { supFunc() } } } private suspend fun magicTimer() { suspendCoroutine<Unit> { coroutine -> scheduler.submit { coroutine.resume(Unit) } } logger.info { "!" } } }