美文网首页Kotlin编程
kotlin单例与java单例

kotlin单例与java单例

作者: Derek_Yan | 来源:发表于2017-07-24 11:23 被阅读386次

    <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>

    相关文章

      网友评论

        本文标题:kotlin单例与java单例

        本文链接:https://www.haomeiwen.com/subject/rmtbkxtx.html