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


    一、懒汉式单例

    在第一次调用的时候实例化自己,Singleton的唯一实例只能通过getInstance()方法访问、线程不安全

    /**
     * Created by Admin on 2017/3/19.
     */
    public class Singleton {
        private static Singleton instance;
        private Singleton(){}
    
        public static Singleton getInstance() {
            if(instance==null){
                instance=new Singleton();
            }
            return instance;
        }
    }

    解决方案:


    1. 在getInstance方法上加同步
    /**
     * Created by Admin on 2017/3/19.
     */
    public class Singleton {
        private static Singleton instance;
        private Singleton(){}
    
        private static synchronized Singleton getInstance() {
            if(instance==null){
                instance=new Singleton();
            }
            return instance;
        }
    }

      2.双重检查锁定

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

    3.3、静态内部类

    这实现了线程安全,又避免了同步带来的性能影响

    /**
     * Created by Admin on 2017/3/19.
     */
    public class Singleton {
        private  Singleton(){}
        private static class singleLazy{
            private static final Singleton instance=new Singleton();
        }
    
        private static final Singleton getInstance() {
                    return singleLazy.instance;
        }
    }

    二、饿汉式单例

    饿汉式单例类.在类初始化时,已经自行实例化

    /**
     * Created by Admin on 2017/3/19.
     */
    public class Singleton {
        private  Singleton(){}
            private static final Singleton instance=new Singleton();
    
        private static Singleton getInstance() {
                    return instance;
        }
    }
  • 相关阅读:
    ReactJS读书笔记一:深入理解JSX
    react经验
    React显示和提交数据
    ReactJS
    PHP中使用memcache
    项目目标文档 ---河北省创新平台年报统计
    系统利益相关者描述案例
    梦断代码 --阅读笔记03
    梦断代码 ---阅读笔记02
    梦断代码---读书笔记01
  • 原文地址:https://www.cnblogs.com/tk55/p/6581325.html
Copyright © 2011-2022 走看看