美文网首页
Java创建单例模式

Java创建单例模式

作者: zfz_amzing | 来源:发表于2020-03-05 14:16 被阅读0次

    创建单例模式

    第一种方式

    • 优点:简单易懂
    • 缺点:在不需要此类的时候也会new一个对象,造成了资源的浪费,如果有多个此类的单例模式类,启动速度会比较慢
    class Singleton {
        private static Singleton singleton = new Singleton();
        private Singleton(){
    
        }
        public static Singleton getSingleton(){
            return singleton;
        }
        public void Print(){
            System.out.println("this is singleton");
        }
    }
    

    第二种方式

    • 优点:简单且不占用资源
    • 缺点:不是完全的线程安全的,如果在if语句执行过后转移到另一线程执行,在转移回来的时候将不进行判断,又生成一次
    class Singleton {
        private static Singleton singleton= null;
        private Singleton(){
    
        }
        public static Singleton getSingleton(){
            if(singleton == null){
                singleton = new Singleton();
            }
            return singleton;
        }
    }
    

    第三种方式--线程安全的

    该方式一次锁住了一个方法,粒度较大,可以改进为锁住new语句,就是所谓的“双重锁机制”

    class Singleton{
        private static Singleton singleton =null;
        private Singleton(){
    
        }
        public static synchronized Singleton getSingleton(){
            if (singleton == null){
                singleton = new Singleton();
            }
            return singleton
        }
    }
    

    改进后:

    class Singleton{
        private static Singleton singleton =null;
        private Singleton(){
    
        }
        public static synchronized Singleton getSingleton(){
            if (singleton == null){
                synchronized (Singleton.class){
                    singleton = new Singleton();
                }
            }
            return singleton;
        }
    }
    

    相关文章

      网友评论

          本文标题:Java创建单例模式

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