zoukankan      html  css  js  c++  java
  • Java之单例模式(懒汉模式、饿汉模式)

    Java之单例模式(懒汉模式、饿汉模式)

    懒汉模式:在类加载的时候不被初始化。 饿汉模式:在类加载时就完成了初始化,但是加载比较慢,获取对象比较快。 *饿汉模式是线程安全的,在类创建好一个静态对象提供给系统使用, 懒汉模式在创建对象时,如果不加上synchronized,会导致对象的访问不是线程安全的。*

    1,饿汉模式的方法

    public class Singleton {
    //1.将构造方法私有化,不允许外部直接创建对象
    private Singleton(){
    }
    //2.创建类的唯一实例,使用private static修饰
    private static Singleton instance=new Singleton();
    //3.提供一个用于获取实例的方法,使用public static修饰
    public static Singleton getInstance(){
    return instance;
    }
    }

    2 ,懒汉模式的方法

    public class Singleton2 {
    //1.将构造方式私有化,不允许外边直接创建对象
    private Singleton2(){
    }
    //2.声明类的唯一实例,使用private static修饰
    private static Singleton2 instance;
    //3.提供一个用于获取实例的方法,使用public static修饰
    public static Singleton2 getInstance(){
    if(instance==null){
    instance=new Singleton2();
    }
    return instance;
    }
    }

    3,测试用例

    public class Test {
    public static void main(String[] args) {
    //饿汉模式
    Singleton s1=Singleton.getInstance();
    Singleton s2=Singleton.getInstance();
    if(s1==s2){
    System.out.println("s1和s2是同一个实例");
    }else{
    System.out.println("s1和s2不是同一个实例");
    }
          //懒汉模式
          Singleton2 s3=Singleton2.getInstance();
          Singleton2 s4=Singleton2.getInstance();
          if(s3==s4){
              System.out.println("s3和s4是同一个实例");
          }else{
              System.out.println("S3和s4不是同一个实例");
          }
    }
    }

     

  • 相关阅读:
    preliminary->advanced exam selections
    Maven入门
    Ajax和Json
    过滤器和监听器
    JSTL标签库
    JSP与EL表达式
    dom4j与XML文档操作
    会话管理
    登录之验证码
    WEB之文件下载
  • 原文地址:https://www.cnblogs.com/lxy522/p/12850912.html
Copyright © 2011-2022 走看看