Ответ
Объект в Kotlin инициализируется при первом доступе к нему (ленивая инициализация). Это потокобезопасно по умолчанию. Пример:
object Singleton {
init {
println("Initialized")
}
fun doWork() = println("Working")
}
// При первом вызове:
Singleton.doWork() // Выведет "Initialized", затем "Working"
Если нужна ранняя инициализация (например, в Application), можно использовать @JvmStatic с lateinit. Объекты существуют в единственном экземпляре (синглтон).