Kotlin协程是否可以作为Java';s ScheduledThreadPoolExecutor用于调度长时间运行的后台作业?
传统的java方法涉及通过以下方式获取ScheduledThreadPoolExecutor:Kotlin协程是否可以作为Java';s ScheduledThreadPoolExecutor用于调度长时间运行的后台作业?,java,kotlin,server,backend,Java,Kotlin,Server,Backend,传统的java方法涉及通过以下方式获取ScheduledThreadPoolExecutor: Executors.newScheduledThreadPool(1) 然后使用scheduleAtFixedRate()等方法在其内部运行一组Runnables 然而,这种方法将您锁定在Java的线程模型中,这在Kotlin代码库中可能是一个挑战,在Kotlin代码库中,您明智地使用Kotlin的suspend,并以一种协同程序友好的方式完成长时间运行的作业(例如:网络/DB操作) 您始终可以使用r
Executors.newScheduledThreadPool(1)
然后使用scheduleAtFixedRate()
等方法在其内部运行一组Runnable
s
然而,这种方法将您锁定在Java的线程模型中,这在Kotlin代码库中可能是一个挑战,在Kotlin代码库中,您明智地使用Kotlin的suspend
,并以一种协同程序友好的方式完成长时间运行的作业(例如:网络/DB操作)
您始终可以使用runBlocking{}
在可运行程序中强制运行挂起方法,以使用ScheduledThreadPoolExecutor
对它们进行调度,但这看起来并不优雅。您正在有效地绕过协程线程模型,回到Java
那么,有没有一种方法可以使用Kotlin的协同程序运行长时间运行的后台操作呢?类似于scheduleAtFixedRate
的API方法(例如:每天下午5点运行X(),基本上是Kotlin友好的cron作业替代品。)的讨论,可能有助于编写自己的解决方案,但我不知道是否有标准解决方案(甚至是第三方解决方案)。