Java实现单例模式的几种方式

2021/6/30 1:22:05

本文主要是介绍Java实现单例模式的几种方式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

单例模式(Singleton),保证在程序运行期间,内存中只有一个实例对象。

饿汉式,最常用的方式。JVM加载类到内存中时,创建实例,线程安全。

public class Boss
{
    private static final Boss boss = new Boss();

    private Boss(){}

    public static Boss getBoss()
    {
        return boss;
    }
}

懒汉式,存在线程安全问题,一般不用

public class Boss
{
    private static Boss boss;

    private Boss(){}

    public static Boss getInstance()
    {
        if(boss==null)
        {
            boss= new Boss();
        }
        return boss;
    }
}

懒汉式,使用加锁的方式解决线程安全问题

public class Boss
{
    private static volatile Boss boss;

    private Boss()){}

    public static Boss getInstance()
    {
        if(boss==null)
        {
            synchronized(Boss.class)
            {
                if(boss==null)
                {
                    boss= new Boss();
                }
            }
        }
        return boss;
    }
}

使用静态内部类,在内部类中持有外部类的实例,从而实现懒加载,并保证线程安全性。

写法不太直观,不常用

public class Boss
{
    private Boss(){}

    private static class BossHolder
    {
        private static final Boss boss = new Boss();
    }

    public static Boss getInstance()
    {
        return BossHolder.boss;
    }
}

终极写法!《Effective Java》中推荐的写法,使用枚举,干净利落!

public enum Boss
{
    INSTANCE
}


这篇关于Java实现单例模式的几种方式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程