Lekce 6 - Práce s výjimkami a stav coroutines v Kotlin
V minulé lekci, CoroutineScope a ukončení běhu coroutines v Kotlin, jsme se naučili pracovat s
CoroutineScope
a už víme, jak ukončit několik coroutine
najednou.
V dnešním dílu našeho tutoriálu zaměřeného na Kotlin coroutines se budeme věnovat spolupráci coroutines. Naučíme se, jak zjistit stav coroutines a ukážeme si, jak je správně pozastavit a jak odchytávat výjimky.
Nespolupracující coroutine
Z minulých dílů už víme nejen jak coroutines vytvořit,
ale i jak je pozastavit či ukončit. Slouží nám k tomu
metoda cancel()
. Abychom však správně pozastavili coroutine,
musí s námi spolupracovat. Vysvětleme si vše na
příkladu:
fun main(): Unit = runBlocking(Dispatchers.Default) { val job = launch { repeat(3) { Thread.sleep(1000) println("Ahoj $it") } } delay(2500) println("Ukončuji") job.cancel() }
V příkladech budeme používat
Dispatchers.Default
, abychom mohli spouštět coroutines na více
vláknech. Pokud bychom nepoužili Dispatchers.Defualt
, tak by
coroutines běžely pouze na hlavním vlákně main
. Coroutine,
která vypisuje do konzole Ahoj
, by tak nepustila druhou coroutine
k zavolání cancel()
.
Příklad je poměrně jednoduchý. Vytvoříme coroutine, která třikrát
vypíše Ahoj
. Předtím než vypíšeme jednotlivé výstupy,
počkáme jednu sekundu. Zároveň
...konec náhledu článku...
Pokračuj dál
Došel jsi až sem a to je super! Věříme, že ti první lekce ukázaly něco nového a užitečného.
Chceš v kurzu pokračovat? Přejdi do prémiové sekce.
Koupit tento kurz
Obsah článku spadá pod licenci Premium, koupí článku souhlasíš se smluvními podmínkami.
- Neomezený a trvalý přístup k jednotlivým lekcím.
- Kvalitní znalosti v oblasti IT.
- Dovednosti, které ti pomohou získat vysněnou a dobře placenou práci.
Popis článku
Požadovaný článek má následující obsah:
V Kotlin tutoriálu si ukážeme, jak musí coroutines spolupracovat, abychom je mohli ukončit. Také se naučíme odchytávat výjimky a některé znovu vyhazovat.
Kredity získáš, když podpoříš naši síť. To můžeš udělat buď zasláním symbolické částky na podporu provozu nebo přidáním obsahu na síť.