Sobes.tech
Junior — Middle

Ինչպես է իրականացվում կորժինների կանգնեցումը և դադարեցումը ասինխրոն ծրագրերում?

sobes.tech AI

Պատասխան AI-ից

Kotlin-ում, korutin-ները կառավարվում են Job և CoroutineScope օբյեկտների միջոցով: Korutin-ները դադարեցնելու և կանգնեցնելու համար օգտագործվում են հետևյալ մեխանիզմները՝

  • Դադարեցում — korutin-ները կարող են դադարեցվել suspend բանալի բառի և այնպիսի ֆունկցիաների միջոցով, որոնք ինքնուրույն դադարեցնում են կատարումը (օրինակ, delay())։ Սա չի խոչընդոտում հոսքը, այլ korutin-ը հետագայում շարունակվում է:

  • Չեղարկում (դադարեցում) — korutin-ները կարող են չեղարկվել cancel() մեթոդը կանչելով իրենց Job-ի վրա։ Չեղարկման ժամանակ, korutin-ը ստանում է CancellationException արտակարգ իրավիճակ և պետք է ճիշտ ավարտվի:

Korutini չեղարկելու օրինակ՝

val job = CoroutineScope(Dispatchers.Default).launch {
    repeat(1000) { i ->
        println("Աշխատում եմ $i ...")
        delay(500)
    }
}

// Դադարեցնել korutin-ը 2 վայրկյան հետո
CoroutineScope(Dispatchers.Default).launch {
    delay(2000)
    job.cancel()
    println("Korutin-ը չեղարկվեց")
}

Այսպիսով, դադարեցումը բնական մաս է korutin-ների աշխատանքի, իսկ կանգնեցումը — նրանց չեղարկումն է Job-ի միջոցով։