我已经尝试过多次使用协程(启动和异步(。两者并行运行,但为什么很多人说发射不是?在这个例子中,我使用了3个协程,每个协程都有1秒的延迟。
这是异步的。完成需要1秒。
DefaultDispatcher-worker-3 is running
DefaultDispatcher-worker-3 is running
DefaultDispatcher-worker-3 is running
async1 finished
async2 finished
async3 finished
1109 ms
这是发布会。也需要1秒才能完成。
DefaultDispatcher-worker-2 is running
DefaultDispatcher-worker-2 is running
DefaultDispatcher-worker-2 is running
launch1 finished
launch2 finished
launch3 finished
1102 ms
同时使用launch
和async
可以并行运行任务。不同的是,launch
返回一个Job
,而async
则给您一个Deferred
,它实际上是一个有结果的Job
。
因此,如果您希望使用两个任务的结果,launch
不是一个好的选择。