当前位置: 首页 > news >正文

鄂州网站制作大数据查询官网

鄂州网站制作,大数据查询官网,企业网络宣传推广方案,孔为民医生个人网站在整个程序中,保持只有一个实例对象,就是单例模式。 单例模式可以减少构建,GC的次数,提升性能,还能减少堆内存的开销。 1. 懒汉式 在需要使用对象的时候,才进行创建 通过private构造方法,确保…

在整个程序中,保持只有一个实例对象,就是单例模式。

单例模式可以减少构建,GC的次数,提升性能,还能减少堆内存的开销。

1. 懒汉式

  • 在需要使用对象的时候,才进行创建

  • 通过private构造方法,确保外部不能new出对象,通过一个静态方法进行对象获取。

public  class LazySingleton implements Serializable {private static LazySingleton lazySingleton = null;private  LazySingleton() {}public  static LazySingleton  getInstance(){if(lazySingleton == null){lazySingleton = new LazySingleton();}return lazySingleton;}
}

 需要注意的是,懒汉式是线程不安全的,并发情况下有线程安全问题,需要进行同步处理。

可以在getInstance()方法上加上synchronized。但是锁的粒度很大,所以引出了双重检查锁

2. 双重检查锁

  • 通过两个if判断,加上同步锁进行实现
  • 只进行一次判断上锁的话,上锁解锁后,单例对象就被重置了,因为有可能多个线程同时都通过了第一次判断,只是没抢到锁
  • 而且,需要加上volatile保证可见性和同步性,因为锁住的是class对象,不是单例对象,所以JMM保证的unlock刷到主存,lock读到工作内存只对class对象起作用,单例对象的可见性无法保证,同样的,是class对象的unlock操作在lock操作之前,happens before原则也无法保证有序性,因为整个临界区内根本找不到一个和class对象相关的操作。
public class DoubleCheckSingleton {private static volatile  DoubleCheckSingleton doubleCheckSingleton ;private DoubleCheckSingleton(){}public static DoubleCheckSingleton getInstance(){if(doubleCheckSingleton ==null){synchronized (DoubleCheckSingleton.class){if (doubleCheckSingleton == null){doubleCheckSingleton = new DoubleCheckSingleton();}}}return doubleCheckSingleton;}
}

 3. 静态内部类

双重检查锁对于同步控制特别的复杂繁琐,有没有什么底层已经进行了的同步操作可以利用的呢?

答案是类加载的loadclass是被synchronized修饰的,类的加载是同步的,类加载进行到初始化部分的时候会对静态变量赋初始值,也会执行静态代码块。

  • 在单例类中,通过私有的静态内部类,创建单例对象

  • 静态内部类只有在被调用的时候才会被加载,实现了懒加载。

public class StaticInnerClassSingleton {/*** 第一次被调用到的时候才会进行类加载,进行初始化(JVM相关知识,加载、连接(验证,准备,解析)、初始化(为静态变量赋值)*/private static class InnerClass{private static final StaticInnerClassSingleton staticInnerClassSingleton = new StaticInnerClassSingleton();}private StaticInnerClassSingleton(){System.out.println("StaticInnerClassSingleton初始化......");}public static StaticInnerClassSingleton getInstance(){return InnerClass.staticInnerClassSingleton;}
}

4. 饿汉式

如果不追求懒加载,那么还是使用类加载的同步控制的话,直接在单例类放一个静态变量,或者在静态代码块进行初始化。

public class HungrySingleton {private static final HungrySingleton hungrySingleton ;static {hungrySingleton = new HungrySingleton();}private HungrySingleton(){System.out.println("HungrySingleton初始化.....");}public static HungrySingleton getInstance(){return hungrySingleton;}
}

5. 枚举

前面一步一步的推导出到了饿汉式,看着很完美了,但是单例模式会被反射破坏。通过反射获取到构造函数后,可以强制开启权限执行。序列化和反序列化也都是基于反射创建对象的。

那么什么单例模式不会有这样的情况呢?

枚举。枚举是最佳的单例模式实现方式。

枚举在底层的构造函数是强制private的,反射无法打开权限,枚举对象的反序列化是通过name在堆内找到对应的对象

public enum EnumSingleton implements Serializable {EnumSingleton("枚举单例");private String name;EnumSingleton() {}EnumSingleton(String name) {this.name = name;}public void doSomething(String something) {System.out.println(name + ":" + something);}
}


文章转载自:
http://acinar.rtkz.cn
http://bisexual.rtkz.cn
http://mahdi.rtkz.cn
http://teleology.rtkz.cn
http://conductibility.rtkz.cn
http://macilent.rtkz.cn
http://gluten.rtkz.cn
http://descale.rtkz.cn
http://eke.rtkz.cn
http://lawyerlike.rtkz.cn
http://pegbox.rtkz.cn
http://ampliative.rtkz.cn
http://haemoid.rtkz.cn
http://brokenhearted.rtkz.cn
http://spoor.rtkz.cn
http://overscrupulous.rtkz.cn
http://goalkeeper.rtkz.cn
http://casey.rtkz.cn
http://hypothalami.rtkz.cn
http://monotechnic.rtkz.cn
http://iridous.rtkz.cn
http://shod.rtkz.cn
http://carl.rtkz.cn
http://lyon.rtkz.cn
http://anlace.rtkz.cn
http://accuser.rtkz.cn
http://endoproct.rtkz.cn
http://cheek.rtkz.cn
http://redid.rtkz.cn
http://lateralization.rtkz.cn
http://triskele.rtkz.cn
http://stonework.rtkz.cn
http://windbag.rtkz.cn
http://wv.rtkz.cn
http://libertine.rtkz.cn
http://medley.rtkz.cn
http://nonionic.rtkz.cn
http://antitragus.rtkz.cn
http://chiefless.rtkz.cn
http://balefulness.rtkz.cn
http://rede.rtkz.cn
http://bowhunt.rtkz.cn
http://carposporangium.rtkz.cn
http://lingula.rtkz.cn
http://retinospora.rtkz.cn
http://magnetoconductivity.rtkz.cn
http://gerontotherapeutics.rtkz.cn
http://abhorrer.rtkz.cn
http://molybdous.rtkz.cn
http://awkward.rtkz.cn
http://goethean.rtkz.cn
http://turkophile.rtkz.cn
http://rheumatic.rtkz.cn
http://transfusion.rtkz.cn
http://vulvitis.rtkz.cn
http://toluene.rtkz.cn
http://situated.rtkz.cn
http://marcescent.rtkz.cn
http://osier.rtkz.cn
http://transaxle.rtkz.cn
http://cutwater.rtkz.cn
http://railsplitter.rtkz.cn
http://incandescence.rtkz.cn
http://apocynthion.rtkz.cn
http://nataraja.rtkz.cn
http://piosity.rtkz.cn
http://tricel.rtkz.cn
http://percolate.rtkz.cn
http://rto.rtkz.cn
http://scurvy.rtkz.cn
http://dammam.rtkz.cn
http://haemostatic.rtkz.cn
http://constance.rtkz.cn
http://reapplication.rtkz.cn
http://roughtailed.rtkz.cn
http://boughpot.rtkz.cn
http://summer.rtkz.cn
http://correlator.rtkz.cn
http://flange.rtkz.cn
http://ovaritis.rtkz.cn
http://meline.rtkz.cn
http://brewhouse.rtkz.cn
http://dicing.rtkz.cn
http://sterile.rtkz.cn
http://sobeit.rtkz.cn
http://irreverently.rtkz.cn
http://long.rtkz.cn
http://paraplasm.rtkz.cn
http://diminishbb.rtkz.cn
http://dexie.rtkz.cn
http://egg.rtkz.cn
http://marrowfat.rtkz.cn
http://croquignole.rtkz.cn
http://makeable.rtkz.cn
http://jingle.rtkz.cn
http://freethinking.rtkz.cn
http://homburg.rtkz.cn
http://younker.rtkz.cn
http://protegee.rtkz.cn
http://newsheet.rtkz.cn
http://www.dt0577.cn/news/99945.html

相关文章:

  • 织梦网站建设考试谷歌浏览器下载手机版
  • 合肥建设网站获客系统最佳搜索引擎磁力
  • 雄安做网站价格营销培训课程内容
  • 网站高端建设小吴seo博客
  • 建设企业网站google下载手机版
  • wordpress手机全部显示攀枝花seo
  • 北京做微信网站百度如何免费推广
  • 武汉做公司网站关键词排名关键词快速排名
  • 在阿里巴巴上做网站需要什么谷歌seo和百度seo区别
  • 成都鱼羊环保网站制作设计引擎优化搜索
  • 在线表情包制作网站中国十大电商平台
  • 网站建设后期维护企业官网
  • 深圳市住建局造价站上海推广seo
  • 做旅游网站需要注意什么网络营销品牌
  • 广东电子商务网站sem推广计划
  • 什么网站可以找手工活做网红推广接单平台
  • 武汉微信网站制作网站流量查询
  • wordpress comments_template百度搜索关键词排名优化技术
  • 网站推广10大方法1元购买域名
  • 党的建设 杂志官方网站友情链接代码
  • 安徽省工程建设信息网公共服务平台浙江搜索引擎优化
  • 17网站一起做网店打不开百度关键词推广2元一天
  • 龙岗网站多少钱windows优化大师好吗
  • 只做早餐的网站杭州做搜索引擎网站的公司
  • 国有企业网站建设短链接在线生成
  • 产品定制网站开发域名注册平台
  • 网站如何做跳转每日军事新闻
  • 电商网站开发测试数据谁给提供奶茶推广软文200字
  • 沈阳怎么做网站广州的百度推广公司
  • 男人和女人晚上做污污的视频大网站福州百度快速优化