Sobes.tech
Junior — Middle

Milliseid meetodeid kasutatakse ülesannete paralleelse täitmise realiseerimiseks kaasaegsetes süsteemides?

sobes.tech AI

Vastus AI-lt

Kaasaegsetes süsteemides teostatakse ülesannete paralleelne täitmine mitmel viisil:

  1. Mitme lõime (Threads) — mitme lõime loomine ja haldamine ühe protsessi raames. Androidis võib see olla Thread klass või ExecutorService.

  2. Asünkroonne programmeerimine — kasutades callback'e, Future, CompletableFuture, Kotlin Coroutines ülesannete täitmiseks ilma peamise lõime blokeerimata.

  3. Lõimupuhvrid (Thread Pools) — piiratud arvu lõimede haldamine ressursside tõhusaks jaotamiseks.

  4. RxJava / Reaktiivne programmeerimine — reaktiivne lähenemine asünkroonsete andmevoogude töötlemiseks.

  5. WorkManager / JobScheduler — süsteemipõhised API-d taustatööde planeerimiseks, mis võivad toimuda paralleelselt ning arvestada seadme piirangutega.

Näide Kotlin Coroutines kasutamisest kahe ülesande paralleelseks täitmiseks:

import kotlinx.coroutines.*

fun main() = runBlocking {
    val job1 = async { heavyTask() }
    val job2 = async { simpleTask() }

    println("Tulemused: ${job1.await()}, ${job2.await()}")
}

suspend fun heavyTask(): String {
    delay(1000) // raske töö simulatsioon
    return "Raske ülesanne lõpetatud"
}

suspend fun simpleTask(): String {
    delay(500) // lihtne töö simulatsioon
    return "Lihtne ülesanne lõpetatud"
}

See lähenemine võimaldab ressursse tõhusalt kasutada ning vältida kasutajaliidese blokeerimist.