Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin协程是否可以作为Java';s ScheduledThreadPoolExecutor用于调度长时间运行的后台作业?_Java_Kotlin_Server_Backend - Fatal编程技术网

Kotlin协程是否可以作为Java';s 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

传统的java方法涉及通过以下方式获取ScheduledThreadPoolExecutor:

Executors.newScheduledThreadPool(1)

然后使用
scheduleAtFixedRate()
等方法在其内部运行一组
Runnable
s

然而,这种方法将您锁定在Java的线程模型中,这在Kotlin代码库中可能是一个挑战,在Kotlin代码库中,您明智地使用Kotlin的
suspend
,并以一种协同程序友好的方式完成长时间运行的作业(例如:网络/DB操作)

您始终可以使用
runBlocking{}
在可运行程序中强制运行挂起方法,以使用
ScheduledThreadPoolExecutor
对它们进行调度,但这看起来并不优雅。您正在有效地绕过协程线程模型,回到Java

那么,有没有一种方法可以使用Kotlin的协同程序运行长时间运行的后台操作呢?类似于
scheduleAtFixedRate
的API方法(例如:每天下午5点运行X(),基本上是Kotlin友好的cron作业替代品。)

的讨论,可能有助于编写自己的解决方案,但我不知道是否有标准解决方案(甚至是第三方解决方案)。