Middle
Lazy axını çoxlu iş parçacığına qarşı təhlükəsiz bir quruluşdurmu?
sobes.tech Süni İntellekt
AI-dan cavab
Kotlin-də lazy varsayılan olaraq çox iplikli təhlükəsiz deyil. İplik təhlükəsizliyi xüsusi başlanğıc rejimi göstərməklə təmin edilir.
Mövcud rejimlər (LazyThreadSafetyMode siyahısı):
SYNCHRONIZED: Standart. Yalnız bir iplik bir zamanda dəyəri başlatmaq üçün kilid istifadə edir. Bütün ipliklər eyni başlatılmış dəyəri görür.PUBLICATION: Bir neçə iplik eyni zamanda başlatıcı lambda-ı icra edə bilər. Uğurla ilk başlatan qalib gəlir. Digər nəticələr nəzərə alınmır. Gözləyən ipliklər ya artıq başlatılmış dəyəri, ya da başqa iplik tərəfindən başlatılmış dəyəri alacaq.NONE: İplik təhlükəsizliyi zəmanəti yoxdur. Ən sürətli rejim. Əgər çox iplikli giriş ehtimalı varsa, bu rejimi istifadə etməyin.
Rejimə açıq şəkildə göstəriş ilə istifadə nümunəsi:
// İplik təhlükəsiz rejim SYNCHRONIZED (standart)
val safeLazyValue: String by lazy {
// Başlatma kodu
"İplik təhlükəsiz sətir (SYNCHRONIZED)"
}
// PUBLICATION rejimi - bir neçə iplik tərəfindən başlatıla bilər, amma nəticə tək olacaq.
val publicationLazyValue: String by lazy(LazyThreadSafetyMode.PUBLICATION) {
// Başlatma kodu
"İplik təhlükəsiz sətir (PUBLICATION)"
}
// İplik təhlükəsiz olmayan rejim. Sürətli, amma təhlükəli.
val unsafeLazyValue: String by lazy(LazyThreadSafetyMode.NONE) {
// Başlatma kodu
"İplik təhlükəsiz olmayan sətir (NONE)"
}