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

    单体应用下的单例模式

    /**
     * 单机版本下的单例模式
     * @author Administrator
     *
     */
    public class SingletonDemo {
        
        private static SingletonDemo instance = null;
        
        private SingletonDemo(){
            System.out.println("我是构造函数-----");
        }
        
        private static SingletonDemo getInstance() {
            if (instance == null) {
                System.out.println("我是构造方法");
                instance = new SingletonDemo();
            } 
            return instance;
        }
        
        public static void main(String[] args) {
            System.out.println(SingletonDemo.getInstance() == SingletonDemo.getInstance());
            System.out.println(SingletonDemo.getInstance() == SingletonDemo.getInstance());
            System.out.println(SingletonDemo.getInstance() == SingletonDemo.getInstance());
            System.out.println(SingletonDemo.getInstance() == SingletonDemo.getInstance());
            System.out.println(SingletonDemo.getInstance() == SingletonDemo.getInstance());
        }
    
    }

    多线程下的单例模式

    /**
     * 多线程下的单例模式
     * @author Administrator
     *
     */
    public class SingletonDemo2 {
    
        private static volatile SingletonDemo2 instance = null;
        
        private SingletonDemo2(){
            System.err.println("创建单例模式");
        }
        
        //DCL (double check lock  双端检锁机制)
        public static SingletonDemo2 getInstance(){
            if (instance == null) {
                synchronized (SingletonDemo2.class) {
                    if (instance == null) {
                        instance = new SingletonDemo2();
                        
                    }
                }
            }
            return instance;
            
        }
        
        public static void main(String[] args) {
            for (int i = 0; i < 100000; i++) {
                
                System.err.println(SingletonDemo2.getInstance() == SingletonDemo2.getInstance());
            }
        }
    }
  • 相关阅读:
    python学习-3 字典
    python学习-3
    python学习-3
    python学习日记-2
    python学习日记
    FTP文件传输
    unity实现截屏功能
    使用C++来写数据库
    background使用
    一张图说明DIV盒子距离
  • 原文地址:https://www.cnblogs.com/keiyoumi520/p/13408143.html
Copyright © 2011-2022 走看看