zoukankan      html  css  js  c++  java
  • 单例测试模式中【饿汉式】与【懒汉式】的区别

    package day25.thread;/**
    /**
     * @author Mr Chen
     * @create 2018-10-09 18:37
     * 单例测试模式:保证类在内存中只有一个对象
     */
    public class Dome01 {
        public static void main(String[] args){
            Singleton s1 = Singleton.s;                      //成员变量被私有,不能用类名.调用
            Singleton s2 = Singleton.s;
            System.out.println(s1==s2);
    
    //        Singleton s1 = Singleton.getS();
    //        Singleton s2 = Singleton.getS();
    //
    //        System.out.println(s1==s2);
    
        }
    }
    /*
    //饿汉式
    class Singleton{
        //1、私有构造方法,其他类不能访问该构造方法
        private Singleton(){}
        //2、创建本类对象
    //    public Singleton s = new Singleton();虽说私有了,别的不能访问,但是自己还是可以访问的,这里创建的s,是成员变量,必须要用成员变量调用它。
        private static Singleton s = new Singleton();//但是这里没有对象,只能用类名点对象调用
        //就是说如果是非静态的成员变量,只能用对象点。如果是静态成员变量,可以用类名.调用
        //3、对外提供公共的访问方法
        public static Singleton getS(){
            return s;
        }
    }*/
    
    //懒汉式
    
    /*
    class Singleton{
        //1、私有构造方法,其他类不能访问该构造方法
        private Singleton(){}
        //2、声明一个引用
    //    public Singleton s = new Singleton();虽说私有了,别的不能访问,但是自己还是可以访问的,这里创建的s,是成员变量,必须要用成员变量调用它。
        private static Singleton s;//但是这里没有对象,只能用类名点对象调用
        //就是说如果是非静态的成员变量,只能用对象点。如果是静态成员变量,可以用类名.调用
        //3、对外提供公共的访问方法
        public static Singleton getS(){
        //线程1等待,线程2访问
            if (s==null){
                s=new Singleton();
            }
            return s;
        }
    }*/
    
    class Singleton{
        //1、私有构造方法,其他类不能访问该构造方法
        private Singleton(){}
        //2、声明一个引用
        public static final Singleton s =new Singleton();//但是这里没有对象,只能用类名点对象调用
    
    }
    
    
    /*
    饿汉式与懒汉式的区别
    1、饿汉式:用空间换来了时间;懒汉式:用时间换空间(不推荐)
    2、在多线程访问时,饿汉式不会创建多个对象,懒汉式有可能会创建多个对象
    
     */
    

      

  • 相关阅读:
    Python动态生成方法
    aid learning安装python
    Pic Go使用阿里云OSS搭建图床
    QSqlQuery、QSqlQueryModel、QSqlTableModel的区别
    python文件上传错误“Required request part 'xxx' is not present”
    【已解决】执行yum命令失败:error: rpmdb: BDB0113 Thread/process 16978/139878363277376 failed: BDB1507 Thread died in Berkeley DB library
    C# DataTable Select用法
    Error in event handler: SyntaxError: Unexpected token '<'
    Lodash 两个数组合并-排重
    forEach,map,filter,find,some,every区别
  • 原文地址:https://www.cnblogs.com/sunyubin/p/9764321.html
Copyright © 2011-2022 走看看