-
Notifications
You must be signed in to change notification settings - Fork 3
Open
Description
با توجه به مستندات مربوطه کاتلین سه نوع پیادهسازی مختلف برای
Lazy
دارد
public enum class LazyThreadSafetyMode {
SYNCHRONIZED,
PUBLICATION,
NONE,
}
SYNCHRONIZED : تنها یک ترد میتواند آن را مقداردهی کند
PUBLICATION: متد مقداردهنده در شرایط همزمانی بین ترد ها ممکن است چندین مرتبه صدا شود. اما اولین مقداری که برگردانده شود بعنوان مقدار اصلی آن استفاده میشود.
NONE: هیچ محدودیتی برای سینکرونایز کردن متد مقداردهنده آن انجام نشده و رفتار آن در شرایط همزمانی مشخص نیست. تنها زمانی قابل استفادهاست که مطمئن باشیم تنها روی یک ترد مقداردهی خواهد شد.
همچنین نیاز به گفتن نیست که خود Lazy یک اینترفیس با یک متد و یک متغیر که و مقدار متغیر رو نگه میداره:
public interface Lazy<out T> {
public val value: T
public fun isInitialized(): Boolean
}
Metadata
Metadata
Assignees
Labels
No labels