博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单例设计模式---懒汉式的多线程安全隐患
阅读量:5320 次
发布时间:2019-06-14

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

public class Single {

    private static Single s=null;
    private Single(){
        
    }
    
    public static Single getInstance(){
/*        if(s==null){  //如果是多线程,会出现多个类名进来,可能冻结,然后醒来加载多个对象
            s=new Single(); //然后new 出多个对象
        }
        return s;*/
        
        
        //解决上面的安全隐患问题
        if(s==null){ //判断s是不是空
            synchronized(Single.class){ //s是空后,进来,用同步锁锁住进来的类名,
                //同步锁锁住不是this,因为静态函数进内存时还没有对象,但是一定有对应的字节码文件对象:类名.class 该对象的类型是class
                
                if(s==null){  //判断s是不是空,是空就new一个对象
                    s=new Single();
                }
            }
        }
        return s;
    }
}

转载于:https://www.cnblogs.com/taobd/p/7044119.html

你可能感兴趣的文章
JS实现手机访问pc网址自动跳转到wap网站
查看>>
How to create movie with pictures
查看>>
HTML 5 拖放(Drag 和drop)
查看>>
shell_exec() has been disabled for security reasons错误怎么解决?
查看>>
【福音】开发者可接入微信公众平台设备功能了
查看>>
springCloud学习-消息总线(Spring Cloud Bus)
查看>>
centos7 自动备份 mysql
查看>>
用JS判断两个数字的大小
查看>>
【luogu P2298 Mzc和男家丁的游戏】 题解
查看>>
CVE-2012-0158 分析
查看>>
Git提交代码冲突:commit your changes or stash them before you can merge.
查看>>
OpenCV —— 直方图与匹配
查看>>
简单查看tomcat中部署java服务的内存使用情况
查看>>
畅通工程续(dijskra+SPFA)
查看>>
Tomcat启动过程源码分析五
查看>>
CF916E Jamie and Tree
查看>>
oracle 以SYSDBA远程连接数据库
查看>>
[OpenGL ES 04]3D变换实践篇:平移,旋转,缩放
查看>>
匈牙利算法(模板)
查看>>
MySQL index
查看>>