kotlin单例与java单例

<h4>kotlin中的单例</h4>
<p><code>
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 {
}*/
</p></code>

<h4>java中的单例</h4>
<p><code>
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;
}*/

}
</p></code>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容