对象初始化过程与单例设计模式(饿汉式与懒汉式)
来源:互联网 发布:color run 知乎 编辑:程序博客网 时间:2024/06/08 06:35
1.对象初始化过程:(先加载类到内存,然后加载类属性,成员方法)定义一个类Person, 在new Person("zhangsan",20);初始化过程:1.因为new 用到Person.class文件,所以会先找到Person.class文件并加载到内存中.2.执行该类中的static静态代码块,如果有的话,给Person.class类进行初始化.3.在对内存中开辟空间,分配内存地址.4.在对内存中建立对象的特有属性,并进行默认初始化.5.对属性进行显示初始化.6.对对象进行对应的构造代码块初始化.7.对对象中构造函数进行初始化.,8.将内存地址付给栈内存中的p变量.注意: 静态只能在栈内存里,非静态变量在堆里.2.单例设计模式:解决一个类在内存中只存在一个对象(保证对象唯一).1.禁止其他程序建立该类对象.2.在本类自定义一个对象.3.为了提供其他程序使用该类对象,对外提供一些访问方法.解决问题:1.将构造函数私有化.(私有化无参构造函数,这样外界就不能直接访问该类对象.)2.在类中创建一个本类对象.(静态类)3.提供一个方法可以获取到该对象(静态方法).(一开始就创建)单例饿汉式(初始化时候创建对象):(开发常用)class Single{private static Single s=new Single();;private Single(){ //私有化} public static getInstance(){return s;}}(创建后用)单例懒汉式(对象被调用时才创建对象):class Single{private Single(){}private Single s=null;public static Single getInstance(){if(s==null){ synchronized(Single.class){if(s==null){ //排除线程同时进入,当第三者进入时,已不为空.a=new Single();}}}return s;}}注意:1.常用饿汉式. 2.在使用懒汉式时,会出现线程冲突(多程序同时创建),这是后要加上synchronized
0 0
- 对象初始化过程与单例设计模式(饿汉式与懒汉式)
- 设计模式:单例中的 饿汉式 与懒汉式
- java单例设计模式 懒汉式与饿汉式
- 单例模式 饿汉式与懒汉式
- 单例模式之懒汉与饿汉式
- 设计模式:单例模式,懒汉与饿汉
- 单例设计模式 饿汉式 懒汉式
- 单例设计模式-饿汉式-懒汉式
- 单例设计模式:饿汉式,懒汉式
- JAVA基础——单例设计模式(饿汉式与懒汉式)
- 个人对单例设计模式的饿汉式与懒汉式理解
- 单例模式(饿汉式与懒汉式)
- java 单例模式:饿汉式与懒汉式
- java 单例模式:饿汉式与懒汉式 区别
- 单例模式分类之懒汉式与饿汉式
- 单例模式中的饿汉式与懒汉式
- java 单例模式:饿汉式与懒汉式
- 单例模式分类之懒汉式与饿汉式
- 修改tomcat默认iso8859-1的编码编码方式
- 封装和继承
- 决策树
- JavaScript作用域、上下文环境、函数对象的定义与调用、匿名函数的定义与调用、闭包
- 第一次做WebService对接遇到的问题
- 对象初始化过程与单例设计模式(饿汉式与懒汉式)
- 文件的物理结构有哪3种,分别具备什么优缺点
- Linux Futex的设计与实现
- 【精】多层PCB层叠结构
- Docker 命令详解 命令示例
- poj 2375 (强连通分量缩点max(入度,出度))
- ubuntu下编译android vlc出现:possibly undefined macro: AC_PROG_LIBTOOL please use m4_pattern_allow
- 【JavaScript】SpringMVC Http请求415 Unsupported Media Type的问题
- NYOJ-1022合纵连横【并查集删除算法】