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不是同一个实例");
          }
    }
    }

     

  • 相关阅读:
    MongoDB 释放磁盘空间 db.runCommand({repairDatabase: 1 })
    RK 调试笔记
    RK Android7.1 拨号
    RK Android7.1 移植gt9271 TP偏移
    RK Android7.1 定制化 itvbox 盒子Launcher
    RK Android7.1 双屏显示旋转方向
    RK Android7.1 设置 内存条作假
    RK Android7.1 设置 蓝牙 已断开连接
    RK Android7.1 进入Camera2 亮度会增加
    RK 3128 调触摸屏 TP GT9XX
  • 原文地址:https://www.cnblogs.com/lxy522/p/12850912.html
Copyright © 2011-2022 走看看