【问题标题】:Run 10 batch job in parallel kotlin在并行 kotlin 中运行 10 个批处理作业
【发布时间】:2021-07-18 15:42:45
【问题描述】:

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

【问题讨论】:

    标签: kotlin asynchronous batch-processing batch-normalization


    【解决方案1】:

    这完全取决于您的任务类型,您是否要执行多个 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

    【讨论】:

    • 你好@mightyWOZ 假设我有一个函数要并行调用 4 次 fun 方法 (params) 如何在这里使用 couritines?
    猜你喜欢
    • 1970-01-01
    • 2014-09-28
    • 2023-01-25
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多