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

临沂h5建站成都旅游酒店推荐

临沂h5建站,成都旅游酒店推荐,黑龙江新闻法制频道,稿定设计在线ps1.1 单例 创建一个单例对象 SingleModel , SingleModel 类有它的私有构造函数和本身的一个静态实例。 SingleModel 类提供了一个静态方法#xff0c;供外界获取它的静态实例。 DesignTest 我们的演示类使用 SingleModel 类来获取 SingleModel 对象。 创建 Single…1.1 单例 创建一个单例对象 SingleModel , SingleModel 类有它的私有构造函数和本身的一个静态实例。 SingleModel 类提供了一个静态方法供外界获取它的静态实例。 DesignTest 我们的演示类使用 SingleModel 类来获取 SingleModel 对象。 创建 SingleModel : public class SingleModel { //创建 SingleModel 的一个对象 private static SingleModel instance new SingleModel(); //让构造函数为 private这样该类就不会被实例化 private SingleModel(){} //获取唯一可用的对象 public static SingleModel getInstance(){ return instance; } public void useMessage(){ System.out.println(Single Model!); } } 测试 public class DemoTest { /**** * 单例模式测试 */ Test public void testSingleModel(){ //不合法的构造函数 //编译时错误构造函数 SingleModel() 是不可见的 //SingleModel singleModel new SingleModel(); //获取唯一可用的对象 SingleModel singleModel1 SingleModel.getInstance(); SingleModel singleModel2 SingleModel.getInstance(); //显示消息 singleModel1.useMessage(); //创建的2个对象是同一个对象 System.out.println(singleModel1 singleModel2); } } 输入结果如下 Single Model! true 我们测试创建 10 万个对象用单例模式创建仅占内存 104 字节而如果用传统方式创建 10 万个对 象占内存大小为 2826904 字节。 1.2 扩展 单例模式有多种创建方式刚才创建方式没有特别的问题但是程序启动就需要创建对象不管你用不 用到对象都会创建对象都会消耗一定内存。因此在单例的创建上出现了多种方式。 懒汉式 1 、延迟加载创建也就是用到对象的时候才会创建 2 、线程安全问题需要手动处理 ( 不添加同步方法线程不安全添加了同步方法效率低 ) 3 、实现容易 案例如下 SingleModel1 public class SingleModel1 {private static SingleModel1 instance;private SingleModel1(){}public static SingleModel1 getInstance(){if(instance null){instance new SingleModel1();}return instance;}} 如果在创建对象实例的方法上添加同步 synchronized , 但是每次 get 获取对象都必须排队竞争效率极 低代码如下 添加同步会解决多线程安全的问题但是会明显的降低获取对象实例的效率。 public static synchronized SingleModel1 getInstance() {if (instance null){instance new SingleModel1();}return instance;} 双重校验锁 SingleModel2 这种方式采用双锁机制安全且在多线程情况下能保持高性能。 public class SingleModel2 {//不实例化private static SingleModel2 instance;//让构造函数为 private这样该类就不会被实例化private SingleModel2(){}//获取唯一可用的对象public static SingleModel2 getInstance(){ //instance为空的时候才创建对象if(instancenull){ //同步锁效率比懒汉式高synchronized (SingleModel2.class){ //这里需要判断第2次为空if(instancenull){instance new SingleModel2();}}}return instance;}public void useMessage(){System.out.println(Single Model!);}} 指令重排问题 对象创建一般正确流程如下 申请内存空间 创建并初始化对象 将变量指向申请的内存空间地址 但其实在对象创建的时候也有可能发生 指令重排问题也就是上面流程会被打乱 申请内存空间 将变量指向申请的内存空间地址 //这一步后变量不再为null但是初始化其实并没完成 创建并初始化对象 如果是这样的话双检锁在多线程情况下也会出现问题需要添加 volatile 属性该属性能防止指令 重排代码如下 public class SingleModel2 {//不实例化private static volatile SingleModel2 instance;//让构造函数为 private这样该类就不会被实例化private SingleModel2(){}//获取唯一可用的对象public static SingleModel2 getInstance(){ //instance为空的时候才创建对象if(instancenull){ //同步锁效率比懒汉式高synchronized (SingleModel2.class){ //这里需要判断第2次为空if(instancenull){instance new SingleModel2();}}}return instance;}public void useMessage(){System.out.println(Single Model!);}} 1.3 单例模式特点 单例类只能有一个实例。 A a new A() 单例类必须自己创建自己的唯一实例。 单例类必须给所有其他对象提供这一实例。 1.4单例模式优点 在内存里只有一个实例减少了内存的开销尤其是频繁的创建和销毁实例。 避免对资源的多重占用比如写文件操作。
http://www.hkea.cn/news/14269707/

相关文章:

  • 建设门户网站培训通知各省网站备案条件
  • 有没有做ppt很厉害的网站制作网页代码大全
  • 定远建设小学网站浙江网站建设推广公司十大排行
  • 百度提交网站的入口地址温猛设计工作室
  • 哈尔滨手机网站建设价格低做网站编辑心得
  • 深圳做网站需要多少费用深圳有名设计公司有哪些
  • 龙岗网站建设技术网站名称 域名
  • 旅游网站开发说明网站建设+管理系统开发
  • 上传网站视频要怎么做才清楚南京理工大学电子工程网官网
  • 做网站编辑好还是期刊编辑好小米口碑营销案例
  • 巴彦淖尔市网站制作湘潭今天最新通知
  • 网页设计作业制作个人网站阿里巴巴国际站app
  • 专业购物网站哈尔滨最大的互联网公司
  • 适合大学生做的网站有哪些产品开发策略
  • 什么是网站建设和维护在线编程的网站
  • 广东专业网站开发有哪些网站可以免费做推广的
  • 动漫做暧昧视频网站常用的营销方法和手段
  • wordpress快速仿站友情网站
  • 个人网站作业番禺学校网站建设建议
  • 上海优秀网站建设公司网站开发mvc架构
  • 网站推广在哪好外贸网站策划案模板
  • 良匠网站建设网站重要三要素
  • vue做pc网站ps网页制作素材
  • 国外做任务网站有哪些手机网站开发服务商
  • 使用vue.js做企业网站关注清远发布
  • 网站搭建怎么收费保网微商城app下载
  • 建设局网站策划书电视台网站建设方案
  • 怎么在网上做装修网站没有域名怎么搭建网站
  • 找个人合伙做网站深圳工业设计公司排行榜
  • 泰安网站建设制作服务外贸公司网址