zoukankan      html  css  js  c++  java
  • Java三种单例模式实现

    一、 饿汉式
    
    public class SingletonHungry{
    
    //构造器私有化,防止外部调用
    private SingletonHungry(){
    }
    //类初始化时立即加载(感觉很饿),没有延时加载的优势,线程安全
    private static SingletonHungry instance = new SingletonHungry();
    //供外部调用,没有同步,效率高
    public static SingletonHungry getInstance(){ return instance; } }

    二、懒汉式

    public class SingletonLazy{

    private SingleLazy(){
    }
    //类初始化时,只声明一个对象,但不初始化对象
    private static SingletonLazy instance;

    //加了同步来保证只创建一个对象,但也造成了效率低的问题,线程安全
    public static synchronized SingletonLazy getInstance(){
    if(instance==null){
    instance = new
    SingletonLazy();
    }
    return instance
    }
    }

    三、静态内部类式【比前两种更优,推荐】

    public class SingletonStaticClass{
    
    private SingletonStaticClass{
    }
    //只有在用到内部类的静态属性时才会被加载,可以延时加载
    private static class SingletonClass{
    private static final SingletonStaticClass instance = new SingletonStaticClass();
    }
    
    //方法没有同步,效率高
    public static SingletonStaticClass getInstance{ return SingletonClass.instance; } }
    [ 版权声明 ]: 本文所有权归作者本人,文中参考的部分已经做了标记! 商业用途转载请联系作者授权! 非商业用途转载,请标明本文链接及出处!
  • 相关阅读:
    Adobe Photoshop CS6+blend4 获取png图片data数据
    Git使用教程
    wpf-Datagrid每行combobox设置不同值
    wpf-阿里巴巴图库获取path data数据
    wpf-效果
    wpf-datagrid/listbox隔行换色
    wpf-DataGrid分页
    【学习笔记】委托、匿名方法、Lambda表达式和事件
    【学习笔记】泛型
    【学习笔记】VS常用快捷键
  • 原文地址:https://www.cnblogs.com/gslgb/p/14634599.html
Copyright © 2011-2022 走看看