博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单例模式
阅读量:7045 次
发布时间:2019-06-28

本文共 1695 字,大约阅读时间需要 5 分钟。

//单例 饿汉模式:创建一个静态实例,私有化构造器,这个是线程安全的public class Sington {    private static final Sington INSTANCE=new Sington();    //私有化构造器    private Sington(){    }    public Sington getInstance(){        return INSTANCE;    }}//单例 懒汉方式public class Sington {    private static  Sington INSTANCE=null;    private Sington(){}    public static Sington getInstance(){        if(null==INSTANCE){            //线程不安全方式,多个线程同时进入这里的话,会创建多个对象            INSTANCE= new Sington();        }        return INSTANCE;    }    //线程安全,但每次获取对象都要获取锁,实际上只要第一个请求访问获取了对象后,之后请求不用再创建对象了,因此这种方式会导致效率变低    public static synchronized Sington getInstance2(){        if(null==INSTANCE){            INSTANCE = new Sington();        }        return INSTANCE;    }    public static Sington getInstance3(){        if(null==INSTANCE){            //多个请求可以同时到达这里,之后都会执行下面代码,只是排队执行,因此还是不安全            synchronized (Sington.class){                INSTANCE= new Sington();            }        }        return INSTANCE;    }    //双重判断    public static Sington getInstance4(){        if(null==INSTANCE){            //多个请求可以同时到达这里,然后排队进下面方法            synchronized (Sington.class){                if(null==INSTANCE){ //多个请求排队进入该方法后,只要第一个创建了对象,后面的请求就不会创建对象了,因为此时INSTANCE已经不为空了                    INSTANCE= new Sington();                }            }        }        return INSTANCE;    }}//静态内部类实现单例模式,这个会懒加载并且线程安全public class Sington {    private Sington(){}    private static class SingtonInstance{        private static final Sington INSTANCE=new Sington();    }    public Sington getInstance(){        return SingtonInstance.INSTANCE;    }}//枚举实现单例模式public enum SingtonEnum {    INSTANCE}

 

转载于:https://www.cnblogs.com/yangxiaohui227/p/10906574.html

你可能感兴趣的文章
我的友情链接
查看>>
找出一个数组中唯一没有成对出现的两个数
查看>>
Ajax (部分一)自己做的,总结页面向后台传Form值、单个值和后台向前台传一个或是一组值...
查看>>
web缓存技术
查看>>
集合知识点
查看>>
Linux快捷键
查看>>
文档对象模型DOM
查看>>
2019北京国际康复及个人健康博览会将在中国国际展览中心举办
查看>>
JVM——类加载机制(一)
查看>>
超清晰的 DNS 原理入门指南 (资源)
查看>>
大神笔记
查看>>
spring cloud构建java b2b2c 电子商务云商平台
查看>>
阿里顶级Java架构师,教你这样手写Spring!
查看>>
android课程表控件、悬浮窗、Todo应用、MVP框架、Kotlin完整项目源码
查看>>
CLOB字段在java中操作
查看>>
磁盘清理
查看>>
javascript 判断数据类型 判空
查看>>
matplotlib 中文字体问题
查看>>
protobuf v3测试
查看>>
(1)知识准备【利用objective-c的runtime特性,结合FMDB实现一个轻量级的ORM】
查看>>