饿汉式
object Singleton
线程安全的懒汉式
class Singleton private constructor() {
companion object {
private var instance: Singleton? = null
@Synchronized
fun instance(): Singleton {
if (instance == null) instance = Singleton()
return instance!!
}
}
}
双重校验锁式
Lazy 默认的线程模式就是 LazyThreadSafetyMode.SYNCHRONIZED 内部默认双重校验锁
class KtSingleton3 private constructor() {
companion object {
val instance by lazy { KtSingleton3() }
}
}
静态内部类式
class Singleton private constructor() {
companion object {
val instance = SingletonHolder.holder
}
private object SingletonHolder {
val holder = Singleton()
}
}
枚举式单例
enum class CommandJsonUtils {
INSTANCE;
}