и запуск, и асинхронная работа выполняются параллельно?

#android #kotlin #coroutine

Вопрос:

Я уже много раз пытался использовать сопрограмму (запуск и асинхронность). оба они работают параллельно, но почему многие люди говорят, что запуск-это не так? В этом примере я использовал 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
 

Комментарии:

1. launch и async по сути одинаковы, но последнее возвращает результат, и есть некоторые различия, когда дело доходит до обработки исключений.

2. @Павел спасибо, я узнаю об этом больше.

Ответ №1:

Используя оба launch и async может выполнять задачи параллельно. Разница в том, что launch возвращает a Job , в то async время как дает вам a Deferred , которое фактически является a Job с результатом.

Поэтому, если вы хотите использовать результаты двух задач, launch это не лучший выбор.

Комментарии:

1. спасибо за ваш совет. Я узнаю об этом больше, буду вам очень признателен