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)"
}