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

广州新业建设管理有限公司网站网站制作一键生成

广州新业建设管理有限公司网站,网站制作一键生成,江苏网站设计公司电话,ps做汽车网站下载为什么使用单例#xff1f; 避免重复创建对象,节省内存,方便管理;一般我们在工具类中频繁使用单例模式; 1.饿汉式(静态常量)-[可用] /*** 饿汉式(静态常量)*/ public class Singleton1 {private static final Singleton1 INSTANCE new Singleton1();private Singleton1(){}…为什么使用单例 避免重复创建对象,节省内存,方便管理;一般我们在工具类中频繁使用单例模式; 1.饿汉式(静态常量)-[可用] /*** 饿汉式(静态常量)*/ public class Singleton1 {private static final Singleton1 INSTANCE new Singleton1();private Singleton1(){}public static Singleton1 getInstance(){return INSTANCE;} } 2.饿汉式(静态代码块)[可用] /*** 饿汉式(静态代码块)*/ public class Singleton2 {private static final Singleton2 INSTANCE;static {INSTANCE new Singleton2();}private Singleton2(){}public static Singleton2 getInstance(){return INSTANCE;} } 3.懒汉式(同步方法)[不推荐] /*** 懒汉式(同步方法)* 不推荐效率太低了*/ public class Singleton3 {private static Singleton3 instance;private Singleton3(){}public synchronized static Singleton3 getInstance(){if(instance null){instance new Singleton3();}return instance;} } 4.双重检查(有空指针问题)[面试用] /*** 双重检查-推荐面试使用*/ public class Singleton4 {private static Singleton4 instance;private Singleton4(){}public static Singleton4 getInstance(){if(instance null){ // 检查一synchronized (Singleton4.class){if(instance null){ // 检查二instance new Singleton4();}}}return instance;} } 双重检查优点 线程安全,延迟加载效率较高; 5.双重检查进阶版(volatile)[推荐] 使用volatile目的在于,禁止创建对象时的3个步骤发生重排序,防止创建出的对象空指针问题; /*** 双重检查 volatile(禁止创建对象时3个步骤执行流程重排序,防止创建出的对象空指针问题)*/ public class Singleton5 {// 加上volatile防止新建对象时重排序带来的“空指针”问题private volatile static Singleton5 instance;private Singleton5(){}public static Singleton5 getInstance(){if(instance null){ // 检查一synchronized (Singleton5.class){/*** 为什么使用volatile修饰instance?* 1.新建对象操作不是原子性操作,其由三个操作构成(instance new Singleton5(););* 1.1.创建一个空的instance;* 1.2.调用构造方法;* 1.3.将创建好的对象赋值给instance实例;* 2.因为创建对象操作不是原子性操作,所以使用volatile来禁止创建对象时重排序* 3.如果不使用volatile修饰instance实例,则创建对象时被JVM重排序后的执行流程可能如下(即出现“空指针问题”)* 1.2 - 1.1 - 1.3*/if(instance null){ // 检查二instance new Singleton5();}}}return instance;} } 6.静态内部类[推荐] * 静态内部类(可用)* 原理* 外部类加载时并不需要立即加载内部类内部类不被加载则不去初始化INSTANCE故不占内存。* 只有当getInstance()方法第一次被调用时才会去初始化INSTANCE,第一次调用getInstance()方法才会使虚拟机加载SingletonInstance类(实现懒加载)* 因为SingletonInstance类中INSTANCE实例是被static final修饰所以只会被初始化一次,后续调用会直接返回实例不需要进行同步操作;*/ public class Singleton6 {private Singleton6(){}private static class SingletonInstance{private static final Singleton6 INSTANCE new Singleton6();}public static Singleton6 getInstance(){return SingletonInstance.INSTANCE;} } 7.枚举[推荐(开发中使用最好)] /*** 枚举*/ public enum Singleton7 {INSTANCE;public void todoSomething(){System.out.println(我是枚举实现单例模式中的一个普通业务方法...);}// 调用public static void main(String[] args) {Singleton7.INSTANCE.todoSomething();} } 8.单例模式面试题 8.1.饿汉式的缺点? 没有实现懒加载容易造成资源的浪费; 8.2.懒汉式的缺点? 为保证线程安全使用同步方法效率低 8.3.为什么使用“双重检查”不用就不安全吗 “双重检查”代码中只做第一次检查是线程不安全的;容易创建多个对象。若不用双重检查也可以使用synchronized去修饰获取实例方法来保证线程安全(类似于懒汉式的同步方法); 8.4.双重检查为什么要使用volatile? 1.新建对象操作不是原子性操作,其由三个操作构成(比如instance new Singleton5(););         1.1.创建一个空的instance;         1.2.调用构造方法;         1.3.将创建好的对象赋值给instance实例;2.因为创建对象操作不是原子性操作,所以使用volatile来禁止创建对象时JVM重排序问题;3.如果不使用volatile修饰instance实例,则创建对象时被JVM重排序后的执行流程可能如下(“空指针问题”),若创建出来的对象为null由于“可见性”问题,下次去获取实例时还是会创建多个对象;JVM重排序后执行流程可能为(即出现空指针问题) 1.2 - 1.1 - 1.3 8.5.在生产中用哪种单例的实现方案最好 使用枚举的方式实现单例最好; 1.写法简单; 2.线程安全; 原因枚举类会被JVM编译成final修饰的class其继承了枚举这个父类,在父类中各个实例都是 使用static定义的,所以枚举的本质就是一个静态编译的对象; 3.懒加载; 4.防止反序列化重新创建对象;
http://www.hkea.cn/news/14309673/

相关文章:

  • 福建建设执业资格中心网站做自适应网站
  • 南山网站制作联系电话国内做的比较大的外贸电商网站
  • idea网站开发教程wordpress登录加验证码
  • 公司网站建设与维护工作计划win7 建网站
  • 网站建设找金手指排名一条龙网站建设价格
  • 网站刚做好怎么做优化企业运营策划公司
  • 门户网站管理流程写作网站后台账号密码忘了怎么办
  • 临西网站建设网站到期不想续费
  • 转包网站建设做非法事情婚庆公司logo
  • 做任务送科比网站开源多用户商城系统细节
  • 备案需要网站空间网站友情链接有什么用
  • 企业网站模板 下载 论坛软件界面设计app
  • wordpress 网站图标设置方法2022年全球3月解封
  • 做兼职上哪个网站西安市建设工程信息网平台
  • 通辽网站建设长春经济技术开发区人才网
  • 阳江招聘网站大全科技加盟网站建设
  • 深圳网站建设比较企业管理课程
  • 河北明迈特的网站在哪里做的个人养老保险
  • 做网站 合肥上海营销型网站建设
  • 做商演任务的网站广州网站建设教程
  • 做彩票生意要登陆哪个网站给别人做网站的话术
  • 网站备案链接代码一个网站要怎么做
  • 网站定制与开发网站如何建设数据库
  • 前期的网站建设的难度电影点评wordpress主题
  • 免费的企业网站丹寇服饰官方网站
  • 门户网站建设的重要性产品详情页面设计
  • 广州h5网站建设公司网站制定
  • 有哪些做ppt用图片的网站有哪些中国建设银行北京市互联网网站
  • 域名申请 网站建设揭阳网站建站网站
  • 盐城市建设局网站设计备案资料白帽seo是什么