6. diel - Práca s výnimkami a stav coroutines v Kotlin
V minulej lekcii, CoroutineScope a ukončenie behu coroutines v Kotlin , sme sa naučili pracovať s
CoroutineScope
a už vieme, ako ukončiť niekoľko coroutine
naraz.
V dnešnom dieli nášho tutoriálu zameraného na Kotlin coroutines sa budeme venovať spolupráci coroutines. Naučíme sa, ako zistiť stav coroutines a ukážeme si, ako ich správne pozastaviť a ako odchytávať výnimky.
Nespolupracujúce coroutine
Z minulých dielov už vieme nielen, ako coroutines
vytvoriť, ale aj ako ich pozastaviť či ukončiť.
Slúži nám na to metóda cancel()
. Aby sme však správne
pozastavili coroutine, musí s nami spolupracovať. Vysvetlime
si všetko na príklade:
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 príkladoch budeme používať
Dispatchers.Default
, aby sme mohli spúšťať coroutines na
viacerých vláknach. Ak by sme nepoužili Dispatchers.Defualt
, tak
by coroutines bežali iba na hlavnom vlákne main
. Coroutine,
ktorá vypisuje do konzoly Ahoj
, by tak nepustila druhú coroutine
na zavolanie cancel()
.
Príklad je pomerne jednoduchý. Vytvoríme coroutine, ktorá trikrát
vypíše Ahoj
. Predtým než vypíšeme jednotlivé výstupy,
počkáme jednu sekundu. Zároveň
...koniec náhľadu článku...
Pokračuj ďalej
Minul si až sem a to je super! Veríme, že ti prvé lekcie ukázali niečo nového a užitočného.
Chceš v kurze pokračovať? Prejdi do prémiové sekcie.
Kúpiť tento kurz
Obsah článku spadá pod licenciu Premium, kúpou článku súhlasíš so zmluvnými podmienkami.
- Neobmedzený a trvalý prístup k jednotlivým lekciím.
- Kvalitné znalosti v oblasti IT.
- Zručnosti, ktoré ti pomôžu získať vysnívanú a dobre platenú prácu.
Popis článku
Požadovaný článok má nasledujúci obsah:
V Kotline tutoriále si ukážeme, ako musia coroutines spolupracovať, aby sme ich mohli ukončiť. Tiež sa naučíme odchytávať výnimky a niektoré znova vyhadzovať.
Kredity získaš, keď podporíš našu sieť. To môžeš urobiť buď zaslaním symbolickej sumy na podporu prevádzky alebo pridaním obsahu na sieť.