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

    饿汉式:

    一上来我就把对象给你 new 好了,你来了直接就可以拿去“吃”了

     1 public class Single {
     2     // 1.私有化构造方法
     3     private Single() {
     4     }
     5 
     6     // 2.new 一个Single对象
     7     private static final Single single = new Single();
     8 
     9     // 创建一个方法,让外面的类可以拿到对象的引用
    10     public static Single getInstance() {
    11         return single;
    12     }
    13 }

    懒汉式

    (要是有人问单例的延迟加载方式指的就是这种方式)

    一开始我就不给你 new 对象,你来找我,我在给你创建一个对象

     1 public class Single {
     2     // 1.私有化构造方法
     3     private Single() {
     4     }
     5 
     6     // 2.声明一个对象的引用
     7     private static Single single = null;
     8 
     9     // 3.判断一下,如果对象为null,则创建一个新对象
    10     public static Single getInstance() {
    11         if (single == null) {
    12             single = new Single();
    13         }
    14         return single;
    15     }
    16 }

    懒汉式有一个缺点,就是在多线程中使用的时候,可能会创建多个实例对象,比如,线程1来调用 getInstance() 方法,判断了 s==null,然后线程1由于未知的原因阻塞了,线程2再来调用 getInstance() 方法,判断 s==null ,线程2就创建了一个对象,这时候线程1又运行了,那么线程1就会创建一个对象~这样就会造成多个对象~

    懒汉式的线程优化——加一个锁

     1 public class Single {
     2     // 1.私有化构造方法
     3     private Single() {
     4     }
     5 
     6     // 2.声明一个对象的引用
     7     private static Single single = null;
     8 
     9     // 3.判断一下,如果对象为null,则创建一个新对象(同步锁synchronized)
    10     public static synchronized Single getInstance() {
    11         if (single == null) {
    12             single = new Single();
    13         }
    14         return single;
    15     }
    16 }

    >
    作者:豌豆果果
    出处:https://www.cnblogs.com/hylogs/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    觉得有所帮助,可以请果果喝咖啡哟^_^!

  • 相关阅读:
    【C#】最完整的IIS添加WCF配置
    IIS配置中增加对WCF程序的支持svc(IIS10中添加WCF支持几种方法小结)
    ASP.NET C#各种数据库连接字符串大全——SQLServer、Oracle、Access
    记一次 .NET 某医院HIS系统 CPU爆高分析(Windbg)
    C#调用Win32 API 的方法
    闲无聊,发个winform中使用html编辑器的方案
    使用非托管 DLL 函数
    flask中的CBV和FBV
    2.6 CSS3其他特性(了解)
    2.5 CSS3盒子模型
  • 原文地址:https://www.cnblogs.com/hylogs/p/9250928.html
Copyright © 2011-2022 走看看