zoukankan      html  css  js  c++  java
  • 单利模式

    通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例

    1.懒汉式

    //懒汉式 , 线程安全
    public class Single {
        //创建实例对象并且初始化
        private static Single instance = null;
        //构造器私有化
        private Single() {
            
        }
        //获取唯一的可用的对象
        public static synchronized Single getInstance() {
            if(instance == null) {
                instance = new Single();
            }
            return instance;
        }
        
        public static void main(String[] args) {
            Single s1 = Single.getInstance();
            Single s2 = Single.getInstance();
            System.out.println(s1 == s2);
        }
    }

    2.饿汉式

    //饿汉式
    public class Single {
        
        private static final Single instance = new Single();
        //构造器私有化
        private Single() {
            
        }
        //获取唯一的可用的对象
        public static Single getInstance() {
            return instance;
        }
        
        public static void main(String[] args) {
            Single s1 = Single.getInstance();
            Single s2 = Single.getInstance();
            System.out.println(s1 == s2);
        }
    }

    3.双重锁形式:

    //双重锁形式
    public class Single {
        
        private static volatile Single instance = null;
        //构造器私有化
        private Single() {
            
        }
        //获取唯一的可用的对象
        public static Single getInstance() {
            if(instance == null) {
                synchronized (Single.class) {
                    if(instance == null) {
                        instance = new Single();
                    }
                }
            }
            return instance;
        }
        
        public static void main(String[] args) {
            Single s1 = Single.getInstance();
            Single s2 = Single.getInstance();
            System.out.println(s1 == s2);
        }
    }

    一般用第三种

    温故而知新
  • 相关阅读:
    win32/mfc/qt 异常处理与总结
    tornado使用长连接并运行在nginx反向代理后面
    tornado中计算etag的一个BUG
    关于HTTP长连接的保持和断开
    系统时间不对导致cookie设置不成功
    tornado中模板的变量命令冲突
    unix时间戳转换
    Twisted echo server
    tornado长连接断开的处理机制
    rp_filter及Linux下多网卡接收多播的问题
  • 原文地址:https://www.cnblogs.com/Uzai/p/9698330.html
Copyright © 2011-2022 走看看