Kotlin Coroutines'те негизги класстар кайсылар?
sobes.tech AI
AIден жооп
Kotlin Coroutines-тин негизги класстары жана концепциялары:
-
CoroutineScope: Ичинде ишке ашырылган корутиндердин жашоо циклин аныктайт. Бардык балдар корутиндерин жокко чыгара алат. -
Job: Корутинге шилтеме. Анын абалын көзөмөлдөөгө, аяктоо үчүн күтүүгө, жокко чыгарууга мүмкүндүк берет. -
Deferred:Jobтин атайын түрү, кийинчерээк жеткиликтүү боло турган маанини көрсөтөт. Асыңкы эсептөөлөр үчүн колдонулат, натыйжаны кайтарат. Натыйжаны.await()функциясы аркылуу алса болот. -
Dispatcher: Корутин ишке ашырылуучу жип же жиптер пулун аныктайт. Негизги диспетчерлер:Dispatchers.Default: CPU-интенсивдүү тапшырмалар үчүн оптималдаштырылган. Жалпы пулду колдонуу.Dispatchers.IO: I/O операциялары үчүн оптималдаштырылган (тор, диск). ылайыктуу сандагы жиптерди колдонуу.Dispatchers.Main: UIнин негизги жипи. UI жаңыртуу үчүн. Android жана башка платформаларда ылайыктуу көзкаранды менен жеткиликтүү.Dispatchers.Unconfined: Корутинаны учурдагы жипте баштайт, бирок аны кайра жандандырат suspending-функцияны кайра жандандыруучу кез келген жипте.
-
Suspending function:suspendачкыч сөзү менен белгиленген жана токтоп, кийинчерээк кайра жандандыра турган функция. Башка suspending-функцияларды чакыра алат. -
runBlocking: Актуалдуу жипти токтотот бардык корутиналар аяктагандан кийин. Башкача айтканда, тестирлөө жана main функцияларында колдонулат. -
launch: Жаңы корутинаны баштайт, учурдагы жипти токтотпостон жанаJobкайтарат. -
async: Жаңы корутинаны баштайт, учурдагы жипти токтотпостон жанаDeferredкайтарат.
Куллануу мисалдары:
// CoroutineScope, launch жана Dispatchers.IO колдонуу мисалы
import kotlinx.coroutines.*
fun main() = runBlocking {
// CoroutineScope түзүү
val scope = CoroutineScope(Dispatchers.IO)
// IO диспетчеринде корутинаны баштоо
val job: Job = scope.launch {
// Тармактык суроо же башка I/O операциясын аткаруу
delay(1000) // Имитация иши
println("Корутин ${Thread.currentThread().name}да аяктады")
}
// Корутинанын аяктоосун күтүү
job.join()
println("Main функциясы аяктады")
}
// async жана Deferred колдонуу мисалы
import kotlinx.coroutines.*
fun main() = runBlocking {
val deferredSum: Deferred<Int> = async {
delay(500)
1 + 1
}
// Натыйжаны күтүү
val result = deferredSum.await()
println("Натыйжа: $result")
}