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
Kotlinhard

Co to jest structured concurrency i czemu jest ważne?

Tagi
#structured-concurrency#cancellation#coroutines
Wróć do kategoriiPrzejdź do quizu

Odpowiedź

To podejście, w którym coroutine są powiązane ze scope, więc ich życie jest ograniczone przez parent job. Anulowanie i błędy propagują się kontrolowanie, co zapobiega „wyciekaniu” pracy w tle (unikaj `GlobalScope` w kodzie aplikacji).

Odpowiedź zaawansowana

Głębiej

Structured concurrency oznacza: każda coroutine ma parent scope/job, więc jej lifetime jest ograniczony i kontrolowany.

Co zyskujesz:

  • Propagację cancel (cancel parent => cancel dzieci).
  • Przewidywalną propagację błędów (błąd dziecka może anulować rodzeństwo; `supervisorScope` zmienia zachowanie).
  • Brak „osieroconych” coroutine wyciekających poza lifecycle.

Praktyka

  • `coroutineScope { ... }` / `supervisorScope { ... }`.
  • W aplikacjach: `viewModelScope`, `lifecycleScope`.
  • Unikaj `GlobalScope`, chyba że to zadanie na cały proces.

Typowe pułapki

  • Odpalanie pracy w scope, którego nie kontrolujesz.
  • Ignorowanie cancel (np. brak sprawdzania `isActive`).

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