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íť.