微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在并行 kotlin 中运行 10 个批处理作业

如何解决在并行 kotlin 中运行 10 个批处理作业

我有一批,可以用同步方法做一些工作。这可能需要一些时间。为了优化,我想创建异步方法,该方法将一次并行执行 10 个批次。在 Kotlin 中可以吗?

解决方法

这完全取决于你的任务类型,你想执行多个 CPU 反弹的长时间运行的任务,那么你应该选择 ExecutorService。另一方面,如果您想执行多个不占用大量 CPU 的异步调用,那么您可以查看 kotliln coroutines

举个例子,当首先使用corotuines时,你需要定义你的任务,假设你有一个挂起函数,如下

suspend fun myTask(param: SomeParam)

现在你想开始并行执行 10 个任务,然后你做

runBlocking {  // start a coroutine it is like a thread,but very lightweight
   launch(Dispatcher.Default){ myTask(param) }    // launch individual coroutine for every parallel task
   launch(Dispatcher.Default){ myTask(someOtherParam) }
   ...
   launch(Dispatcher.Default){ myTask(yetAnotherParam) }
   //  Choose appropriate dispatcher (Main,IO or Default)
}

launch 是一个协程构建器,它在不阻塞调用线程的情况下启动一个协程。如果你想返回一些结果,你也可以使用 async。

有很多可用的选项,我建议您查看Coroutines guide

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。