Выбор ответа Middle Делегаты спрашивают часто обновлено

Режим потокобезопасности by lazy по умолчанию

Вопрос

Какой режим у by lazy { } без аргументов?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: SYNCHRONIZED: инициализатор выполнится ровно один раз. По умолчанию lazy использует SYNCHRONIZED: первое обращение берёт блокировку, остальные потоки ждут готового значения.

Варианты ответа

  1. NONE: без синхронизации, ради скорости
  2. SYNCHRONIZED: инициализатор выполнится ровно один разправильный ответ
  3. PUBLICATION: инициализатор может выполниться несколько раз
  4. Зависит от платформы: на Android NONE, на сервере SYNCHRONIZED

Разбор

По умолчанию lazy использует SYNCHRONIZED: первое обращение берёт блокировку, остальные потоки ждут готового значения. PUBLICATION допускает параллельные вычисления, сохраняя первое опубликованное. NONE без синхронизации, для однопоточного кода, его выбирают явно ради скорости. От платформы поведение по умолчанию не зависит.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.