#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. спасибо за ваш совет. Я узнаю об этом больше, буду вам очень признателен