Java-多线程(三)单例懒汉式的并发访问问题

单例懒汉式的并发访问问题

//饿汉式。  多线程并发饿汉式没问题。
class Single
{
    private static final Single s = new Single();

    private Single(){}

    public static Single getInstance()
    {
        return s;
    }
}

//懒汉式。
class Single
{
    private static  Single s = null;

    private Single(){}

    /*
    并发访问会有安全隐患,所以加入同步机制解决安全问题。
    但是,同步的出现降低了效率。
    可以通过双重判断的方式,解决效率问题,减少判断锁的次数。

    */
    public static  Single getInstance()
    {
        if(s==null)
        {
            synchronized(Single.class)
            {
                if(s==null)
        //          -->0 -->1
                    s = new Single();
            }
        }
        return s;
    }
}



class Demo implements Runnable
{
    public void run()
    {
        Single.getInstance();
    }
}


class ThreadDemo6 
{
    public static void main(String[] args) 
    {
        System.out.println("Hello World!");
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容