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

天津重型网站建设推荐网站设计公司 知道万维科技

天津重型网站建设推荐,网站设计公司 知道万维科技,wordpress编辑管理员,深圳网站设计公司招聘简介 单例模式:一个类有且仅有一个实例,该类负责创建自己的对象,同时确保只有一个对象被创建。 特点:类构造器私有、持有自己实例、对外提供获取实例的静态方法。 单例模式的实现方式 饿汉式 类被加载时,就会实例…

简介

单例模式:一个类有且仅有一个实例,该类负责创建自己的对象,同时确保只有一个对象被创建。

特点:类构造器私有、持有自己实例、对外提供获取实例的静态方法。

单例模式的实现方式

饿汉式

类被加载时,就会实例化一个对象并交给自己的引用,供系统使用;而且,由于这个类在整个生命周期中只会被加载一次,因此只会创建一个实例,即能够充分保证单例。

案例:

public class Singleton {private static Singleton instance = new Singleton();private Singleton() { }public static Singleton getInstance() {return instance;}
}

饿汉式比较耗费资源,因为它创建单例的时间过早,它是在类被加载的时候创建单例的

懒汉式加双重检查加锁

饿汉式的优化,只有在获取类的实例时才会创建实例。

案例:

public class SingleTon {// 使用volatile修饰,保证变量的可见性private static volatile SingleTon instance;public static SingleTon getInstance() {// 先检查实例是否存在,如果不存在才进入下面的同步块if (instance == null) {// 同步块,线程安全的创建实例synchronized (SingleTon.class) {// 再次检查实例是否存在,如果不存在才真的创建实例if (instance == null) {instance = new SingleTon();}}}return instance;}
}

饿汉式中的注意事项:

1、为什么类持有的自己的私有实例要用volatile修饰:为了保证指定变量的有序性和可见性。new一个对象的代码 SingleTon instance = new SingleTon(); 可以分解为3行伪代码:

memory=allocate();// 分配内存 相当于c的malloc
ctorInstanc(memory) //初始化对象
instance=memory //设置instance指向刚分配的地址

上面的代码在编译器运行时,可能出现重排序,从 1-2-3 变为 1-3-2,在多线程环境下就会出现问题,使用 volatile 关键字会禁止这种重排序。

2、为什么要双重锁:如果只有一个锁,很有可能两个线程都通过了 if(instance == null) 的判断,所以在进入同步代码块之后还需要再判断一次

用静态内部类来实现单例模式

案例:

public class SingleTon {private SingleTon2() { }// 用一个私有的静态内部类来存储外部类的实例,类只会被加载一次,保证单例。// 内部类只有在被调用时才会被加载,保证了延迟加载private static class SingleTonHolder {private static SingleTon2 instance = new SingleTon2();}public static SingleTon2 getInstance() {return SingleTonHolder.instance;}
}

破坏单例模式

破坏单例模式:序列化和反射可以破坏单例模式。

  • 解决序列化破坏单例的问题:在类中添加readResolve方法,返回类中的实例,可以解决通过序列化破坏单例模式的问题;
  • 解决反射破坏单例的问题:在构造方法中抛异常,可以解决通过反射破坏单例模式的问题

单例模式的使用案例

饿汉式单例模式的使用:jdk中的Runtime类,每个java程序中都只有一个Runtime实例,它代表java程序的运行环境

public class Runtime {// 类被加载时,就会实例化一个对象并交给自己的引用private static Runtime currentRuntime = new Runtime();// 返回单例对象的方法public static Runtime getRuntime() {return currentRuntime;}// 私有化的构造方法/** Don't let anyone else instantiate this class */private Runtime() {}
}

文章转载自:

http://WDR48GKD.bmncq.cn
http://PBCNuYRr.bmncq.cn
http://i8K2tqkL.bmncq.cn
http://WbGMgxl8.bmncq.cn
http://X6Yp7MMj.bmncq.cn
http://sPJ4S1ov.bmncq.cn
http://C6gSczBK.bmncq.cn
http://I0Clfwzg.bmncq.cn
http://gp9X1JH2.bmncq.cn
http://ht9XwtaP.bmncq.cn
http://LIIfkRg9.bmncq.cn
http://EeOWE7zx.bmncq.cn
http://4fk70DMP.bmncq.cn
http://jrvDBsFO.bmncq.cn
http://zYmkdccA.bmncq.cn
http://lLRbhQ7L.bmncq.cn
http://JOw8ShkG.bmncq.cn
http://37Q1XZ2j.bmncq.cn
http://wl5DbdBD.bmncq.cn
http://ZilzFWKu.bmncq.cn
http://g0P8E2oa.bmncq.cn
http://ytsPUY0a.bmncq.cn
http://23PnqnWh.bmncq.cn
http://IDDouC8I.bmncq.cn
http://gHTU0ayK.bmncq.cn
http://ocF2FBY0.bmncq.cn
http://pIW8pMYs.bmncq.cn
http://fGOsUnpf.bmncq.cn
http://y0eXkVvb.bmncq.cn
http://ekV8OoKB.bmncq.cn
http://www.dtcms.com/wzjs/622340.html

相关文章:

  • 株洲营销型网站建设代理平台登录
  • 富源县建设局的网站是什么做的比较好旅游网站
  • 外贸网站使用攻略公司网站开发费分录是
  • 服饰品牌网站建设做民宿推广都有哪些网站
  • 做门头上那个网站申报企业工商信息查询系统官网
  • 网站建设公司市场策划方案济南工程建设验收公示网
  • 免费的视频网站如何赚钱企业it外包服务公司
  • 移动端网站建设的请示朋友圈海报用什么网站做的
  • 怎样做网站标题的图标在线识别图片来源
  • 邢台做网站口碑好延安网站建设费用
  • 阿里云1m宽带做网站卡吗平台网站如何优化
  • 百度seo排名优化是什么百度seo设置
  • 建设网站建设网站建站公司常见提成比例
  • 淘宝店铺如何和别的网站做链接网站代理加盟
  • 子页网站设计沈阳最新通知今天重要消息
  • 网站开发与制作论文开题8大营销工具指的是哪些
  • 网站建设小程序企业网站建设总结
  • 手机端网站提交表单验证代码企业网站建设分析报告
  • 重庆食品商城网站设计网站开发实用技术介绍
  • 网站建设沈阳下载莱芜都市网app
  • 做菠菜网站判多久网站建设公司 云智互联
  • 云南高端网站制作价格wordpress 采集 api
  • 那个网站报道过鸟巢建设无锡网红餐厅
  • gulf oil wordpress镇江网站seo
  • 精品设计网站crm系统是什么
  • 吉林省长春市建设局网站wordpress换轮播海报
  • 网站建设及运维方案截图京东图片做网站
  • 张家界做网站找哪家好百度推广需要备案的网站吗
  • 怎么自己注册网站中山seo建站
  • 网站推广服务合同如何建立wordpress商城