黑马程序员一单例设计模式的饿汉式与懒汉式以及加锁的情况
来源:互联网 发布:联想淘宝旗舰店靠谱吗 编辑:程序博客网 时间:2024/05/26 14:09
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
首先,我们以类Single为例,做一个单例设计模式
一个类在内存中只有一个对象,只操作一个对象,所以该类只会提供一个获得对象的方法,
返回值类型为类类型,返回的内容为对象
//同步函数被静态修饰后,用的锁synchronized是this
//静态进内存中,没有本类对象,但是有该类对应的字节码文件对象 类.class
饿汉式
所谓饿汉式,在代码块初始化的时候,就会生成一个对象,
并且向外提供一个公有的方法,直接返回太对象。
由于方法语句只有一句,所以不存在锁的情况
class Single
{private Singel(){}
private static Singel s=new Singel();
public static Singel getInstance()
{
return s;
}
}
懒汉式
所谓懒汉式,就是在初始化的时候并不给该类对象赋值属性,为null.
只用当调用该方法时,进行判断如果值为null,则新建一个内存对象赋值给该对象,返回该对象
否则则认为该对象以存在,返回原来的对象,确保对象的唯一性。
class Single
{private static Single s=null;
private Single(){}
public static Single getInstance()
{
if(s==null)
{
s=new Single();
}
return s;
}
}
懒汉式的加锁情况
由于懒汉式为多行语句,所以在线程运行中可能会造成中断,生成多个对象的情况。
为了提高代码的高效性,所以进行了加锁以及双重判断的情况
第一重判断,为当不存在该对象时,则增加加锁代码块,保证代码块中语句不中断
第二重判断,如果对象值为null,新建这个对象,提高代码的高效性。
class Single
{private static Single s=null;
private Single(){}
public static Single getInstance()
{
if(s==null)
{
synchronized(Single.class)
{
if(s==null)
s=new Single();}
}
return s;
}
}
- 黑马程序员一单例设计模式的饿汉式与懒汉式以及加锁的情况
- 黑马程序员--单例设计模式的笔记(懒汉式,饿汉式)
- 黑马程序员-单例设计模式:懒汉式和饿汉式
- 黑马程序员_单例设计模式(饿汉式&懒汉式)
- 黑马程序员-单例设计模式:“饿汉式”和“懒汉式”
- 黑马程序员———单例设计模式-懒汉式关于线程安全以及要点
- 黑马程序员--懒汉式和饿汉式单例设计模式
- 黑马程序员——java中关于单例设计模式和懒汉式多调用的问题
- 黑马程序员——java小结_007_单例设计模式(懒汉式、饿汉式)
- 黑马程序员——单例设计模式(饿汉式,懒汉式)
- 黑马程序员笔记:单例模式的简单实现与两种实现方法的比较(饿汉式和懒汉式)(一)
- 黑马程序员笔记:单例模式的简单实现与两种实现方法的比较(饿汉式和懒汉式)(二)
- 黑马程序员 关于单例模式、懒汉式、饿汉式
- 个人对单例设计模式的饿汉式与懒汉式理解
- 【单例设计模式】懒汉式跟饿汉式的区别
- 饿汉式与懒汉式单例模式的区别
- 黑马程序员——单例设计模式,饿汉加懒汉
- 单例设计模式:饿汉式、懒汉式、枚举方式。以及涉及到的线程安全问题和反射机制问题。
- 出租车收费计算
- 骑车快还是走路快
- 分数序列的前n项之和
- UFUNufun币ufun优趣集团
- 一些容易错的地方
- 黑马程序员一单例设计模式的饿汉式与懒汉式以及加锁的情况
- ADS-B显示终端6.3
- JSP JAVA 自定义 错误页面(404,505,500)
- 在NT系列操作系统里让自己“消失”]
- 【单调队列】单调队列不单调——噗
- WinNT & Win2K下实现进程的完全隐藏
- 返回值类型
- 循环文件路径
- ZF2开发中常用操作 - zend framework 2 开发实战中常用操作最热门30问