zoukankan      html  css  js  c++  java
  • 单例模式 之 单例模式——饿汉模式

    饿汉模式特点:见名知意,“他”很饿,迫切需要找到吃的... 所以 饿汉模式需要 第一时间 “找到吃的”(构建对象)。

    如下代码:

     1 /**
     2  * 饿汉模式
     3  */
     4 public class HungrySingleton {
     5     private static  HungrySingleton instance=new HungrySingleton();
     6 
     7     /**
     8      * 禁止外部构建
     9      */
    10     private HungrySingleton(){}
    11 
    12     /**
    13      * 由外部调用
    14      * @return
    15      */
    16     public static HungrySingleton getInstance(){
    17         return instance;
    18     }
    19 
    20     /**
    21      * 测试
    22      * @param args
    23      */
    24     public static void main(String[] args) {
    25         for(int i=0;i<20;i++){
    26             new Thread(()->{
    27                 System.out.println(HungrySingleton.getInstance());
    28             }).start();
    29         }
    30     }
    31 
    32 }

    测试结果:运行二十线程,运行的结果为同一个用例。

     2 com.company.HungrySingleton@19281561
     3 com.company.HungrySingleton@19281561
     4 com.company.HungrySingleton@19281561
     5 com.company.HungrySingleton@19281561
     6 com.company.HungrySingleton@19281561
     7 com.company.HungrySingleton@19281561
     8 com.company.HungrySingleton@19281561
     9 com.company.HungrySingleton@19281561
    10 com.company.HungrySingleton@19281561
    11 com.company.HungrySingleton@19281561
    12 com.company.HungrySingleton@19281561
    13 com.company.HungrySingleton@19281561
    14 com.company.HungrySingleton@19281561
    15 com.company.HungrySingleton@19281561
    16 com.company.HungrySingleton@19281561
    17 com.company.HungrySingleton@19281561
    18 com.company.HungrySingleton@19281561
    19 com.company.HungrySingleton@19281561
    20 com.company.HungrySingleton@19281561
    21 com.company.HungrySingleton@19281561
    22 
    23 Process finished with exit code 0

    安全性:在类加载时会将进行加载,等到调用时该类已经被处理好了所以能保证多线程调用下,调用的是同一个实例。

    懒加载:如上所说,在类加载时就已经加载出来,所以不存在懒加载。

    性能:性能不是很好,若长期不使用会占用内存空间,内存空间不足时容易造成内存溢出异常。

  • 相关阅读:
    Linux系统学习之网络管理
    EntityFramework 6.1.2-beta2
    微软开源的30个基础设施项目-C#
    vs2015 Android SDK
    批量删除空的文件夹
    统一者管理员指南(Unifier Administration Guide)中文
    XXX全球 IP 地址库
    mssql2008R2 RCU-6083:ALTER database FWC SET READ_COMMITTED_SNAPSHOT ON
    ORA-01843: 无效的月份,执行sql语句更改为美国语言后仍然失败的解决办法
    Win7如何安装IIS来浏览ASP网站
  • 原文地址:https://www.cnblogs.com/zhangzhonghui/p/11460339.html
Copyright © 2011-2022 走看看