单例模式(Single),顾名思义阿。就是这个类的实例(也就是对象),有且只有一个java
这样就能够达到复用的结构,也无需浪费jvm的内存空间。并发
单例模式呢,又分两种.一种是饿汉式加载,另外一种是懒汉式加载。jvm
先上饿汉式加载吧ui
/** * 饿汉式加载 */ public class Quick { private static Quick quick = new Quick(); public static Quick getInstance(){ return quick; } }
下面是懒汉式线程
/** * 懒汉式加载 */ public class Lazy { private static Lazy lazy; public static Lazy getInstance() { if (lazy != null) {//当已经建立过实例了,直接返回 return lazy; } else { synchronized (lazy) { if (lazy != null) { return lazy; } else { lazy = new Lazy(); return lazy; } } } } }
相信你们这里看到了代码块,为何这么个写法呢code
1.若是是同步方法的话,那效率很是低.特别是当实例已经建立的状况下(已经不能并发获取了)对象
2.同步代码块里面为啥还要再加个判断呢,这是由于并发的状况下.在实例化的过程当中有多个线程调用了此方法内存
而同步的调用代码块,因此这里须要再加一层判断get