【发布时间】:2021-07-18 15:42:45
【问题描述】:
我有一批,可以在同步方法中完成一些工作。这可能需要一些时间。为了优化,我想创建异步方法,它将一次并行执行 10 个批处理。在 Kotlin 中可以吗?
【问题讨论】:
标签: kotlin asynchronous batch-processing batch-normalization
我有一批,可以在同步方法中完成一些工作。这可能需要一些时间。为了优化,我想创建异步方法,它将一次并行执行 10 个批处理。在 Kotlin 中可以吗?
【问题讨论】:
标签: kotlin asynchronous batch-processing batch-normalization
这完全取决于您的任务类型,您是否要执行多个 CPU 长时间运行的任务,那么您应该使用ExecutorService。另一方面,如果你想执行多个 CPU 密集度不高的异步调用,那么你可以查看kotliln coroutines
举个例子,当首先使用协程时,你需要定义你的任务,假设你有一个挂起函数,如下所示
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 是一个协程构建器,它在不阻塞调用线程的情况下启动协程。如果你想返回一些结果,你也可以使用异步。
有很多选择,我建议你看看Coroutines guide
【讨论】: