kotlin单例与java单例

kotlin中的单例



class SingletonTestKt{

//静态内部类
/*companion object {
    fun get() =  Holder.INSTANCE
}

private object Holder{
    val INSTANCE = SingletonTestKt
}*/


//双重限制
/*companion object {
    val instance by lazy(LazyThreadSafetyMode.SYNCHRONIZED){
        SingletonTestKt
    }
}*/

//同步锁
/*companion object {
    var instance: SingletonTestKt? = null

    @Synchronized
    fun get(): SingletonTestKt{
        if(instance == null) instance = SingletonTestKt()
        return instance!!
    }
}*/

//基本懒加载
/*companion object{
    val instance by lazy(LazyThreadSafetyMode.NONE){
        SingletonTestKt
    }
}*/

}

/*
//懒加载
object SingletonTestKt {
}*/

java中的单例



public class SingletonTest {

private SingletonTest(){}

//静态内部类
//懒加载 + 同步锁
/*public static class Holder{
    public static SingletonTest INSTANCE = new SingletonTest();
}

public static SingletonTest getInstance(){
    return Holder.INSTANCE;
}*/

//双重限制
//懒加载 + 同步锁
/*private static volatile SingletonTest INSTANCE;

public static SingletonTest getInstance(){
    if(INSTANCE == null){
        synchronized (SingletonTest.class){
            if(INSTANCE == null)
                INSTANCE = new SingletonTest();
        }
    }
    return INSTANCE;
}*/

//同步锁
/*private static SingletonTest INSTANCE;

public static synchronized SingletonTest getInstance(){
    if(INSTANCE == null)
        INSTANCE = new SingletonTest();
    return INSTANCE
}*/


//基本懒加载
/*private static SingletonTest INSTANCE;

public static SingletonTest getInstance(){
    if(INSTANCE == null)
        INSTANCE = new SingletonTest();
    return INSTANCE;
}*/

//懒加载
/*
private static SingletonTest INSTANCE = new SingletonTest();

public static SingletonTest getInstance(){
    return INSTANCE;
}*/

}

你可能感兴趣的:(kotlin单例与java单例)