lazy
в Kotlin по умолчанию не является потокобезопасным. Потокобезопасность достигается за счет указания специального режима инициализации.
Доступные режимы (перечисление LazyThreadSafetyMode
):
SYNCHRONIZED
: По умолчанию. Блокировка используется для обеспечения того, чтобы только один поток инициализировал значение в любой момент времени. Все потоки видят одно и то же инициализированное значение.PUBLICATION
: Несколько потоков могут одновременно выполнять лямбду инициализатора. Первый поток, успешно инициализировавший значение, выигрывает. Остальные результаты игнорируются. Потоки, ожидающие инициализации, получат либо уже инициализированное значение, либо значение, инициализированное другим потоком.NONE
: Никаких гарантий потокобезопасности. Самый быстрый рlazy
в Kotlin по умолчанию не является потокобезопасным. Потокобезопасность достигается за счет указания специального режима инициализации.
Доступные режимы (перечисление LazyThreadSafetyMode
):
SYNCHRONIZED
: По умолчанию. Блокировка используется для обеспечения того, чтобы только один поток инициализировал значение в любой момент времени. Все потоки видят одно и то же инициализированное значение.PUBLICATION
: Несколько потоков могут одновременно выполнять лямбду инициализатора. Первый поток, успешно инициализировавший значение, выигрывает. Остальные результаты игнорируются. Потоки, ожидающие инициализации, получат либо уже инициализированное значение, либо значение, инициализированное другим потоком.NONE
: Никаких гарантий потокобезопасности. Самый быстрый рЗарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.