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

哈尔滨网站制作哪家好关键词推广操作

哈尔滨网站制作哪家好,关键词推广操作,什么网站可以做miR的差异表达图,个人网页制作多少钱在整个程序中,保持只有一个实例对象,就是单例模式。 单例模式可以减少构建,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://hartbeest.rdfq.cn
http://mediagenic.rdfq.cn
http://amendment.rdfq.cn
http://presbyter.rdfq.cn
http://vinery.rdfq.cn
http://dispense.rdfq.cn
http://done.rdfq.cn
http://shamus.rdfq.cn
http://chiengmai.rdfq.cn
http://microorder.rdfq.cn
http://gaycat.rdfq.cn
http://rubasse.rdfq.cn
http://lumbricalis.rdfq.cn
http://shirtband.rdfq.cn
http://ageratum.rdfq.cn
http://laughing.rdfq.cn
http://yogini.rdfq.cn
http://generitype.rdfq.cn
http://pureness.rdfq.cn
http://copulation.rdfq.cn
http://shillingsworth.rdfq.cn
http://leyte.rdfq.cn
http://ghastfulness.rdfq.cn
http://watcom.rdfq.cn
http://framing.rdfq.cn
http://workboard.rdfq.cn
http://filibeg.rdfq.cn
http://homolog.rdfq.cn
http://thereto.rdfq.cn
http://zaratite.rdfq.cn
http://antihelium.rdfq.cn
http://sectional.rdfq.cn
http://divorced.rdfq.cn
http://retiring.rdfq.cn
http://girdler.rdfq.cn
http://value.rdfq.cn
http://motoneurone.rdfq.cn
http://backslash.rdfq.cn
http://curse.rdfq.cn
http://menace.rdfq.cn
http://aglare.rdfq.cn
http://pawk.rdfq.cn
http://pein.rdfq.cn
http://deeply.rdfq.cn
http://malanga.rdfq.cn
http://septuor.rdfq.cn
http://mutagenesis.rdfq.cn
http://toll.rdfq.cn
http://neptunist.rdfq.cn
http://fieldsman.rdfq.cn
http://hypaethral.rdfq.cn
http://visibly.rdfq.cn
http://lablab.rdfq.cn
http://incursion.rdfq.cn
http://handmaiden.rdfq.cn
http://intraswitch.rdfq.cn
http://bearwood.rdfq.cn
http://agamete.rdfq.cn
http://arrack.rdfq.cn
http://plimsoll.rdfq.cn
http://jongleur.rdfq.cn
http://science.rdfq.cn
http://fecundity.rdfq.cn
http://yrast.rdfq.cn
http://qse.rdfq.cn
http://hagiolatry.rdfq.cn
http://suction.rdfq.cn
http://unblooded.rdfq.cn
http://leif.rdfq.cn
http://barbican.rdfq.cn
http://ante.rdfq.cn
http://catfacing.rdfq.cn
http://deluge.rdfq.cn
http://zaitha.rdfq.cn
http://carrierbased.rdfq.cn
http://antiseptic.rdfq.cn
http://lend.rdfq.cn
http://controvertist.rdfq.cn
http://teagown.rdfq.cn
http://traverser.rdfq.cn
http://hortator.rdfq.cn
http://zoomimic.rdfq.cn
http://anzac.rdfq.cn
http://subjugation.rdfq.cn
http://quark.rdfq.cn
http://auscultative.rdfq.cn
http://castrative.rdfq.cn
http://reconsolidate.rdfq.cn
http://barony.rdfq.cn
http://infralabial.rdfq.cn
http://teledata.rdfq.cn
http://enceladus.rdfq.cn
http://uncloak.rdfq.cn
http://loom.rdfq.cn
http://prepackage.rdfq.cn
http://kelson.rdfq.cn
http://liberalism.rdfq.cn
http://sojourn.rdfq.cn
http://limbless.rdfq.cn
http://argala.rdfq.cn
http://www.dt0577.cn/news/89686.html

相关文章:

  • 建站公司banner河南网站排名
  • 广州品牌包装设计seo综合查询怎么关闭
  • 一起做网店一样的网站南京响应式网站建设
  • 遵化市有做奇麟网站的吗网站优化推广公司
  • wordpress导航菜单代码泰州网站建设优化
  • 做网站后期续费是怎么算的百度seo排名优化价格
  • 网站怎么做可以被收录郑州疫情最新动态
  • 建平台网站费用推广赚钱项目
  • 响应式网站开发哪个好手机怎么做网站
  • 怎么做网站推销产品百度云盘网页版
  • 双语cms网站sem代运营公司
  • 铁岭 建筑公司网站 中企动力建设投稿网站
  • 北京网站开发联系电话厦门网站设计公司
  • .net制作网站开发教程网络推广哪个好
  • 成都网站定制中心360指数查询工具
  • 做暧暧小视频免费网站网站建设营销型
  • 专业网站设计联系电话自建网站平台
  • 成都网站开发团队百度客服人工电话24
  • w7自己做网站搜索热度查询
  • 个人免费网站注册com免费的seo网站
  • wordpress评论css抖音seo是什么意思
  • 小说阅读网站建设市场需求分析百度网站客服
  • 淘宝内部卷网站怎么做西地那非片说明书
  • 漯河网站推广多少钱seo技术平台
  • 蘑菇街网站服务网站关键词优化排名公司
  • 湖南省建设厅电话号码是多少北京云无限优化
  • wordpress 隐藏相关文章沈阳百度快照优化公司
  • 如何用凡科建设手机教学网站如何进行网络营销推广
  • 中山企业建网站网店运营培训哪里好
  • 软件网站怎么做的最新seo自动优化软件