Синхронизированный синглтон в Котлине - PullRequest
1 голос
/ 30 июня 2019

Я новичок в Котлине.Все еще изучаю основной синтаксис.Я слышал о сопутствующих объектах, подобных статическим в Java.Но не знаю, как создать синхронизированный синглтон в Kotlin.

Ответы [ 2 ]

6 голосов
/ 30 июня 2019

Просто используйте

object Singleton {
    // any members you need
}

Уже правильно синхронизировано:

Инициализация объявления объекта является поточно-ориентированной.

Обратите внимание, что это не гарантирует, что вызовы будут поточно-ориентированными, но это так же, как в Java.

0 голосов
/ 30 июня 2019

Я думаю, немного больше исследований, и я нашел это.Вот как это сделать.Пожалуйста, поправьте меня, если это можно сделать лучше.

companion object {
@Volatile private var INSTANCE: Singleton ? = null
 fun  getInstance(): Singleton {
         if(INSTANCE == null){
             synchronized(this) {
                 INSTANCE = Singleton()
             }
         }
         return INSTANCE!!
   }
}
...