1.为什么用单例?

简单来说就是全局共享一个对象,如果某对象初始化很麻烦也推荐用单例,只有一个情况下好管理,什么配置类,Util包一般情况下最好都是单例

2.单例跟static关系

两者有点像,static从理解是确实是“单例”,但是根本所处JVM区域不同,static只能在静态方法区,单例对象还可以再堆里,spring容器常见吧,这不就是一个最好的单例,JVM调优调的也主要是堆,静态区以后少用。

3.懒汉饿汉

当做一种思维来理解

4.单例实现

一定要保证私有构造,我看网上很多人忘了写这个,不私有构造,怎么成单例?

是不是final也无所谓吧,我觉得加跟不加都行。

5.双层锁单例的实现

最外层的if是减少可能排队的线程,貌似不加也行?不加的话可能会有更多的线程阻塞到里面。

中间那层锁是阻塞线程用的,目的是让线程一个一个去创建。

里面那层实际上比较重要,因为阻塞的线程可能是多个,没有这个判断里面的线程刚释放锁,外面的就立刻又创建一个了造成多次初始化会浪费。

//饿汉式
class SingleA {public static SingleA singleA = new SingleA();public static SingleA getSingle(){return singleA;}private SingleA() {}
}//懒汉式
class SingleB{public static SingleB singleB = null;public static synchronized SingleB getSingleB(){if(singleB==null){singleB=new SingleB();}return singleB;}private SingleB() {}
}//静态内部类
class SingleC{public static class SingleCC{public static SingleCC singleCC=new SingleCC();}public static  SingleCC getSingelC(){return SingleCC.singleCC;}private SingleC(){}
}//双层锁
class SingleD{public static SingleD singleD = null;public static SingleD getSingleD(){if (singleD==null){synchronized ("lock"){if (singleD==null){singleD=new SingleD();}}}return singleD;}private SingleD(){}
}class SingleE{enum Color{Name("颜色");private String name;public void setName(String name) {this.name = name;}public String getName() {return name;}Color(String name) {this.name = name;}}public static void main(String[] args) {}
}

几种常见单例的写法和问题相关推荐

  1. java23种设计模式+单例_Java23种设计模式之单例模式

    一.单例模式简介 单例模式是Java设计模式中常见的一种模式.主要分为懒汉式单例.饿汉式单例.登记式单例: 单例模式的特点:  1.单例类只能有一个实例:  2.单例类必须自己创建自己的唯一的实例: ...

  2. (0088)iOS开发之单例的写法以及重新认识

    首先看下经常的写法: 注明:dispatch_once这个函数, 它可以保证整个应用程序生命周期中某段代码只被执行一次!且线程安全,所以也能够用它实现单例的线程安全 Singleton.h@inter ...

  3. 23种设计模式 单例 (整理摘抄优秀的博文) 记住

    https://github.com/yzmaodeng/java-keypointknowledge/commit/0894a14b03b724cd362f466e8f20514efbc164aa ...

  4. Qt C++单例类写法

    前言 所谓的单例模式,简单的总结有两点: 1.确保一个类只能创建一个实例 2.能够提供一个访问类对象的全局指针 为满足以上条件,需要做的事情很简单:第一步,将构造函数设置为私有,不让在其它地方可以创建 ...

  5. 请列举你了解的分布式锁_这几种常见的“分布式锁”写法,搞懂再也不怕面试官,安排!...

    什么是分布式锁? 大家好,我是jack xu,今天跟大家聊一聊分布式锁.首先说下什么是分布式锁,当我们在进行下订单减库存,抢票,选课,抢红包这些业务场景时,如果在此处没有锁的控制,会导致很严重的问题. ...

  6. php 类 单例,PHP里的单例类写法实例

    PHP里的单实例类在进行数据交换,节省内存上还是很有意义的.写个简单例子. 类1,单实例类本身: class UTIL { private static $instance; public funct ...

  7. 支持多并发的单例有哪几种写法

    一.什么是单例以及单例的使用场景就不多说了,不清楚的可以看我上篇文章或者自行查找 二.单例和多并发之间的规则 单例就是只能创建一个实例对象,而多并发情况下如果不处理一下单例的写法很难保证只创建一个实例 ...

  8. java中的单例_细说Java中的几种单例模式

    在Java中,单例模式分为很多种,本人所了解的单例模式有以下几种,如有不全还请大家留言指点: 饿汉式 懒汉式/Double check(双重检索) 静态内部类 枚举单例 一.饿汉式 image 饿汉式 ...

  9. java中单例实现常用的方式_Java单例的常见形式

    Java单例的常见形式 本文目的:总结Java中的单例模式 本文定位:学习笔记 学习过程记录,加深理解,便于回顾.也希望能给学习的同学一些灵感 一.非延迟加载单例类 public class Sing ...

  10. Java单例的常见形式

    2019独角兽企业重金招聘Python工程师标准>>> Java单例的常见形式 本文目的:总结Java中的单例模式 本文定位:学习笔记 学习过程记录,加深理解,便于回顾.也希望能给学 ...

最新文章

  1. 极限中0除以常数_高中物理必知的50个关键常数, 每个都是得分点!
  2. matlab 直方图_MATLAB作图实例:19:用二元直方图分析图片颜色
  3. android如何开发ui服务,Android UI-对Activity工作流程的理解(一)
  4. tcpdump显示udp包_TCPdump抓包命令详解
  5. 协程学习-python
  6. jq/js获取屏幕宽度和高度
  7. gcj-02 wgs-84 java_GCJ-02火星坐标系和WGS-84坐标系转换关系
  8. HTML常用排版标签
  9. vue使用bulma
  10. 基于UDP的简易网络聊天室
  11. win10 计算机菜单,win10系统计算机界面菜单栏不见了的还原方案
  12. 树梅派应用16: 树莓派“瑞士军刀”扩展板教程 V1.X TO V2.X 的适配说明
  13. 添加了排比句的狗屁不通生成器
  14. P4086 [USACO17DEC]My Cow Ate My Homework S(静态数据预处理:后缀和、后缀最小值)
  15. 《左耳听风-高效学习篇》阅读笔记
  16. 【OS_Windows】Win10应用商店闪退和点击Cortana搜索框闪退的解决方法
  17. 剑指offter笔记
  18. Linux-linux系统函数
  19. Android 12.0 第三方无源码apk授予QUERY_ALL_PACKAGES等其他权限的方法
  20. 《SQL Server基础——SQL语句》

热门文章

  1. matlab中单位格式,[转载]matlab中的数据显示格式-format
  2. 卷积神经网络CNN:Tensorflow实现(以及对卷积特征的可视化)
  3. android 平板怎么截图,在安卓手机或平板电脑上截屏的5种方法,学起来!
  4. 常用测试用例设计方法
  5. length与length()
  6. python数据模型和各种实用小技巧,保证让你更PYTHONIC
  7. 计算机组成原理完整学习笔记(二):系统总线
  8. MATLAB中保存eps文件的正确做法 | 保留颜色
  9. python list平均数_数据分析之Python干货笔记
  10. Raki的读paper小记:Code and Named Entity Recognition in StackOverflow