Sobes.tech
Middle

Kas see on laiskonstruktsioon?

sobes.tech AI

Vastus AI-lt

lazy Kotlinis vaikimisi mitte-kiire jaotamisega. Turvalisus saavutatakse spetsiaalse käivitamisrežiimi määramisega.

Saadaval režiimid (loend LazyThreadSafetyMode):

  • SYNCHRONIZED: Vaikimisi. Lukk kasutatakse selleks, et tagada, et ainult üks voog määrab väärtuse igal ajal. Kõik vood näevad sama jaotatud väärtust.
  • PUBLICATION: Mitmed vood võivad samaaegselt käivitada initsialiseerimlambe. Esimene voog, mis edukalt väärtuse määrab, võidab. Teised tulemused ignoreeritakse. Ootavad vood saavad kas juba initsialiseeritud väärtuse või väärtuse, mille on initsialiseerinud teine voog.
  • NONE: Ühtegi turvalisuse garantiid. Kõige kiirem režiim. Ärge kasutage seda režiimi, kui on tõenäoline, et viite laiska omaduseni mitmest voost samaaegselt.

Näide kasutamisest koos selge režiimi määramisega:

// Turvaline režiim SYNCHRONIZED (vaikimisi)
val safeLazyValue: String by lazy {
    // Initsialiseerimiskood
    "Turvaline string (SYNCHRONIZED)"
}

// REŽIIM PUBLICATION - võib olla initsialiseeritud mitmest voost, kuid tulemus jääb samaks.
val publicationLazyValue: String by lazy(LazyThreadSafetyMode.PUBLICATION) {
    // Initsialiseerimiskood
    "Turvaline string (PUBLICATION)"
}

// Mitte-turvaline režiim. Kiire, kuid ohtlik mitmevoogulise kasutamise puhul.
val unsafeLazyValue: String by lazy(LazyThreadSafetyMode.NONE) {
    // Initsialiseerimiskood
    "Mitte-turvaline string (NONE)"
}