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

兰州装饰公司十强烟台网站排名优化费用

兰州装饰公司十强,烟台网站排名优化费用,网站开发总结性报告,濮阳房产网站建设概述上一篇日志中#xff0c;我们介绍了单例模式的概念和基础的应用本节中#xff0c;我们就来介绍一下 java 语言中如何编写单例模式类只适合单线程环境的单例模式public class Singleton {private static Singleton instance null;private Singleton() { }public static S…概述上一篇日志中我们介绍了单例模式的概念和基础的应用本节中我们就来介绍一下 java 语言中如何编写单例模式类只适合单线程环境的单例模式public class Singleton {private static Singleton instance null;private Singleton() { }public static Singleton getInstance(){if (instance null) {instance new Singleton();}return instance;}}这是单例模式的最简单实现private 的构造方法保证了类不会被通过 new 的方式创建同时判断 instance 是否为 null 保证了单线程环境下单例模式运行的正确性但是正如我们反复强调的这种方式是非线程安全的原因在于当多个线程并发执行同时进行判断 instance 为 null 的操作而此时 instance 确实为 null那么所有的线程都将去创建一个单例的对象这显然是我们不希望看到的那么下面我们就来解决这个问题通过同步锁实现线程安全正如上面提到的之所以存在线程安全问题主要是因为判断 instance 是否为 null 与对象的创建是非原子性的那么我们只需要用锁来保证两个操作的原子性即可解决这个问题public class Singleton {private static Singleton instance null;private Singleton() { }public static synchronized Singleton getInstance() {if (instance null) {instance new Singleton();}return instance;}}但是加锁对性能是会造成影响的在并发环境下当一个线程运行到 synchronized 处获取锁进入到 instance 的判断其他所有的并发线程都必须在该线程执行完 instance 的创建操作后才能够继续执行而事实上一旦 instance 被创建这样的等待都将会是白费的双重校验锁双重校验锁对上面的例子进行了优化public class Singleton {private static Singleton instance null;private Singleton() { }public static Singleton getInstance() {if (instance null) {synchronized (Singleton.class) {if (instance null) {instance new Singleton();}}}return instance;}}一旦对象被创建那么程序将不会去请求获取锁而是直接返回 instance最简单的线程安全单例模式public class Singleton {private static Singleton instance new Singleton();private Singleton() { }public static Singleton getInstance() {return instance;}}这段代码看上去非常简单他会在类首次被加载时创建单例的对象jvm 会保证单例对象只被创建一次但是有时我们仅仅是在代码中引用了这个类或者仅仅调用了这个类中的其他方法我们并不希望在我们还不需要通过 getInstance 方法获取对象的时候对象就已经被创建了这是这种方式的主要问题静态内部类public class Singleton {private Singleton() {}private static class SingletonHolder {private final static Singleton instance new Singleton();}public static Singleton getInstance() {return SingletonHolder.instance;}}这种方式解决了上一种方式所存在的问题仅在 getInstance 方法被调用时对象才会被创建使用枚举public enum SingletonEnum {BOOM_MAZE_FACTORY(new BoomMazeFactory()),STANDARD_MAZE_FACTORY(new StandardMazeFactory()),;private MazeFactory mazeFactory;public MazeFactory getMazeFactory() {return mazeFactory;}SingletonEnum(MazeFactory mazeFactory) {this.mazeFactory mazeFactory;}}由于枚举在项目中并不会被常常用到这样的用法就更加难得一见了而事实上这才是最推荐的用法微信公众号欢迎关注微信公众号以技术为主涉及历史、人文等多领域的学习与感悟每周三到七篇推文只有全部原创只有干货没有鸡汤标签技术帖技术分享javasingleton设计模式模式设计单例
http://www.zqtcl.cn/news/883235/

相关文章:

  • 安徽省建设干部学校网站首页做软件是什么工作
  • 图书馆网站设计方案安徽质量工程建设网站
  • 电子商务网站建设效果那个网站可以做链接
  • 怎样做投资与理财网站网页设计优秀案例分析
  • 网站制作需要学什么搜狗网页版入口
  • html源码网seo搜索优化工程师招聘
  • 做的网站在小窗口中怎么保持中间广东省公共资源交易中心地址
  • 合肥做网站汇站网织梦网站广告代码教程
  • 复兴专业做网站wordpress搬家502
  • 代做毕网站淘宝权重查询
  • 有专做高端折扣女装的网站吗大连最好的做网站的公司
  • 网站需求嘉兴seo关键词优化
  • 自己开发微网站上海成品网站
  • 国外对企业网站开发的研究山西住房与城乡建设厅定额网站
  • 国家工信部网站备案postfix wordpress
  • 兴宁电子商务网站建设网站模板在线制作
  • 汕头整站优化营销推广网
  • 云服务器搭建网站教程加盟教育培训机构
  • 建筑网站设置工资单人换了怎么换太原做网站找谁
  • 网站做推广需要什么条件重庆网站推广哪家服务好
  • 怎样做理财网站wordpress做产品页教程视频
  • 官网模板建站塔山双喜北京网站建设兴田德润官网多少
  • 网站优化推广外包深圳专业网站建设定制
  • 网站开发aichengkeji元凤建盏简介
  • 移动端网站怎么制作asp做的网站如何发布
  • 做的网站用户密码在哪里找凡科申请的网站和qq空间一样吗
  • 如何自己做网站发布到服务器上面wordpress没有幻灯片
  • 闽侯县建设局网站企业建设网站例文
  • 家居类企业响应式网站搭建电商系统
  • 临沂哪里做网站比较好中国建设银行企业信息门户网站