Zestawy rozmówBlog

Twoja wymarzona praca? Lets Git IT.
Interaktywna platforma przygotowująca do rozmów technicznych dla nowoczesnych programistów.

XGitHub

Platforma

  • Kategorie

Zasoby

  • Blog
  • O aplikacji
  • FAQ
  • Sugestie

Prawne

  • Polityka prywatności
  • Regulamin

© 2026 LetsGit.IT. Wszelkie prawa zastrzeżone.

LetsGit.IT/Kategorie/Kotlin
Kotlinmedium

`launch` vs `async` — jaka jest różnica w coroutines?

Tagi
#coroutines#async#launch#deferred
Wróć do kategoriiPrzejdź do quizu

Odpowiedź

`launch` uruchamia coroutine do efektów ubocznych i zwraca `Job`. `async` zwraca `Deferred<T>` z wynikiem i odbierasz go przez `await()`; oba powinny działać w scope (structured concurrency).

coroutineScope {
  val a = async { 1 }
  val b = async { 2 }
  val sum = a.await() + b.await()
  println(sum)
}

Odpowiedź zaawansowana

Głębiej

  • `launch { ... }`: fire-and-forget *w scope*; dostajesz `Job` do cancel/join.
  • `async { ... }`: oczekujesz wartości; dostajesz `Deferred<T>` i zwykle robisz `await()`.

Wyjątki:

  • Nieobsłużone wyjątki w `launch` anulują parent scope.
  • Wyjątki w `async` ujawniają się przy `await()` (albo gdy parent je „zobaczy”).

Typowe pułapki

  • `async` bez `await()` (gubisz błędy i sens).
  • Blokowanie w coroutines na domyślnym dispatcherze.
  • `GlobalScope` i wycieki pracy poza lifecycle.

Powiązane pytania

Kotlin
coroutineScope vs supervisorScope: jak obsługują błędy?
#kotlin#coroutines#supervisor
Kotlin
StateFlow vs SharedFlow: jaka jest różnica?
#kotlin#stateflow#sharedflow
Kotlin
Wyjątki w korutynach: jak się propagują i kiedy użyć `CoroutineExceptionHandler`?
#kotlin#coroutines#exceptions
Kotlin
Dispatchery w korutynach: `Default` vs `IO` vs `Main`?
#kotlin#coroutines#dispatchers
Kotlin
Channel vs Flow - czym się różnią w korutynach?
#kotlin#coroutines#flow
Kotlin
Anulowanie coroutines jest kooperatywne — co to znaczy w praktyce?
#coroutines#cancellation#isActive