单例模式

来源:互联网 发布:apache bin httpd.exe 编辑:程序博客网 时间:2024/06/11 13:15

单例类指仅仅被实例化一次的类。
实现线程安全的单例类有两种方式:

1. 双检锁+volatile关键字禁止重排序

public class DoubleCheckedLocking {    private volatile static Instance instance;    private DoubleCheckedLocking(){}    public static Instance getInstance() {        if (instance == null) {                        //第一次检查            synchronized (DoubleCheckedLocking.class) {  //加锁                if (instance == null)                    //第二次检查                    /*如果声明instances时不加volatile来禁止重排序                    *编译器重排序后就会出现先将申请到的内存空间地址赋                    *值给instance,                    *后调用构造函数初始化内存空间的情况                    *这时其他线程判断instance不为空,去访问时就会访问到                    *一个未完成初始的实例                    */                    instance = new Instance();            }        }        return instance;    }}

2. 使用静态内部类保存实例

public class Singleton {    private Singleton(){}    private static class InstanceHolder {        public static Instance instance = new Instance();    }    public static Instance getInstance() {        //使用了类的静态成员,导致InstanceHolder类被初始化        //由于jvm类初始化时会自动加锁,所以利用jvm的特性实现了线程安全和延迟加载        return InstanceHolder.instance ;    }}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 儿子你搞快点你爸要回来啦电影 儿子快拿出来你爸快回来了视频 儿子你要高就快点你爸回来了电影 儿子你要就快点你爸要回来了小说 儿子 快点妈要来了漫画 你快点啊你爸快回来了视频 儿子快点你爸快回来了在哪能看 儿子搞快点你爸要回来了短文 儿子你快停下你爸要醒了视频 儿子用点力妈 儿子深一点用点力阅读 你要搞就快点你爸快回来了视频 试衣间深一点用点力视频 儿子深一点用点力阅读张研 儿子你用点力全文阅读 啊快一点啊用点力啊视频 儿子再用点力妈要飞了视频 中国真实的母教子视频 四川单亲妈教子性知识 52岁全程落脸视频 我尝到了母爱的滋味开头 我尝到了母爱的滋味txt 我尝到了母爱的甜蜜400 真实母教子视频 我尝到了母亲的滋味400 我尝到了母爱的滋味450 单亲家庭母教子 啊儿子深点妈要来了中文字 美国真实的母教子视频 儿子别 停妈还要中文字 尝到了母爱的滋味400 让儿子尝试了一次中文字 我尝到了母爱的滋味40 我尝到了母爱的滋味400小说下载 好胀胀死妈了乖乖儿子中文字 我尝到了母爱的滋味300 儿子别射J去妈会怀孕视频中文 全屏儿子射J去妈怀孕了漫画 全屏无遮单身妈和儿 四川真实亲妈视频y 全屏无遮单身妈和儿子漫画