java中懒汉和饿汉模式有什么不同

  介绍

这期内容当中小编将会给大家带来有关java中懒汉和饿汉模式有什么不同,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

java的优点是什么

1。简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2。面向对象;3。分布性,Java是面向网络的语言;4。鲁棒性、java提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生的错误。5。安全性,用于网络,分布环境下的Java必须防止病毒的入侵。6。体系结构中立,只要安装了Java运行时系统,就可在任意处理器上运行。7。可移植性、Java可以方便地移植到网络上的不同机器。8。解释执行,Java解释器直接对Java字节码进行解释执行。

<强> 1,区别

懒汉比较懒,只有当调用getInstance的时候,才回去初始化这个单例。

饿汉就是类一旦加载,就把单例初始化完成,保证getInstance的时候,单例是已经存在的了

线程安全:

饿汉式天生线程安全,可直接用于多线程,无任何问题,

懒汉风格本身是非线程安全的(双检锁解决并发问题)

资源加载和性能:

饿汉式在类创建的同时实例化一个静态对象出来,无论以后是否使用该单例,都会占用一定的内存,但相应地,由于其资源已初始化,第一次调用的速度也会更快。

懒汉式,会延迟加载,在第一次使用本单例时才会出现实例对象,第一次调用时要做初始化,如果要做的工作比较多,性能会有些延迟,以后就像饿汉式一样。

<强> 2,实例

 public  class  SingleTon01  {
  ,,,public  static  void  main (String [], args), {
  ,,,,,,,GirlFriend  gf1 =, GirlFriend.getGf ();
  ,,,,,,,GirlFriend  gf2 =, GirlFriend.getGf ();
  ,,,,,,,//真实的
  ,,,,,,,System.out.println (==gf1  gf2);
  ,
  ,,,,,,,Cat  cat1 =, Cat.getCat ();
  ,,,,,,,Cat  cat2 =, Cat.getCat ();
  ,,,,,,,//真实的
  ,,,,,,,System.out.println (cat1 ==, cat2);
  ,,,}
  }
  ,
  ,/* *
  ,*单例模式,饿汉模式
  ,*在类加载的时候就会创建对象
  ,*/class  GirlFriend  {
  ,,,public  String 名称;
  ,
  ,,,private  static  GirlFriend  gf =, new 女朋友(“小红”);
  ,
  ,,,public  static  GirlFriend  getGf (), {
  ,,,,,,,return 女朋友;
  ,,,}
  ,
  ,,,/* *
  ,,,,*,构造器私有化,不能在本类之新外
  ,,,,*,@param 名字
  ,,,*/,,,private 女朋友(String 名称),{
  ,,,,,,,this.name =,名称;
  ,,,}
  ,
  ,,@Override
  ,,,public  String  toString (), {
  ,,,,,,,return “女朋友{“+
  ,,,,,,,,,,,,,,,“name=& # 39;“, +, name  +, & # 39; \ & # 39; & # 39; +
  ,,,,,,,,,,,,,,,& # 39;}& # 39;;
  ,,,}
  }
  ,/* *
  ,*单例模式——懒汉模式
  ,* 1。构造器私有化
  *大敌;2。提供一个静态静态属性对象
  *大敌;3。提供一个公共的静态的方法,返回一个实例对象
  *大敌;4。懒汉模式,只有在用户调用方法时,才会创建对象,之后再次调用,返回的是同一对象
  ,*/class  Cat  {
  ,,,private  String 名称;
  ,
  ,,,private  static  Cat 猫;
  ,
  ,,,private 猫(String 名称),{
  ,,,,,,,this.name =,名称;
  ,,,}
  ,
  ,,,public  static  Cat  getCat (), {
  ,,,,,,,if  (cat ==, null), {
  ,,,,,,,,,,,cat =, new 猫(“加菲猫“);
  ,,,,,,,}
  ,,,,,,,return 猫;
  ,,,}
  ,
  ,,@Override
  ,,,public  String  toString (), {
  ,,,,,,,return “猫{“+
  ,,,,,,,,,,,,,,,“name=& # 39;“, +, name  +, & # 39; \ & # 39; & # 39; +
  ,,,,,,,,,,,,,,,& # 39;}& # 39;;
  ,,,}
  }

上述就是小编为大家分享的java中懒汉和饿汉模式有什么不同了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

java中懒汉和饿汉模式有什么不同