`

java中单例的五种写法

    博客分类:
  • Java
阅读更多
/**
 * 单例模式的五种写法:
 * 1、懒汉
 * 2、恶汉
 * 3、静态内部类
 * 4、枚举
 * 5、双重校验锁
 */
/**
 * 五、 双重校验锁,在当前的内存模型中无效
 */
class LockSingleton
{

    private volatile static LockSingleton singleton;

    private LockSingleton()
    {
    }

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

}

/**
 * 四、枚举,《Effective Java》作者推荐使用的方法,优点:不仅能避免多线程同步问题,而且还能防止反序列化重新创建新的对象
 */
enum EnumSingleton
{
    INSTANCE;

    public void doSomeThing()
    {
    }
}

/**
 * 三、静态内部类 优点:加载时不会初始化静态变量INSTANCE,因为没有主动使用,达到Lazy loading
 */
class InternalSingleton
{

    private static class SingletonHolder
    {
        private final static InternalSingleton INSTANCE = new InternalSingleton();
    }

    private InternalSingleton()
    {
    }

    public static InternalSingleton getInstance()
    {
        return SingletonHolder.INSTANCE;
    }
}

/**
 * 二、恶汉,缺点:没有达到lazy loading的效果
 */
class HungrySingleton
{

    private static HungrySingleton singleton = new HungrySingleton();

    private HungrySingleton()
    {
    }

    public static HungrySingleton getInstance()
    {
        return singleton;
    }
}

/**
 * 一、懒汉,常用的写法
 */
class LazySingleton
{

    private static LazySingleton singleton;

    private LazySingleton()
    {
    }

    public static LazySingleton getInstance()
    {
        if (singleton == null)
        {
            singleton = new LazySingleton();
        }
        return singleton;
    }
}

 

分享到:
评论

相关推荐

    Java中单例模式的7种写法

    Java中的单例模式是一种设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。下面将详细介绍7种不同的Java单例模式实现方式: 1. **懒汉式(非线程安全)**: 这是最简单的实现,延迟初始化,但在多线程...

    Kotlin中单利常用的五种写法

    单利模式是写代码过程中不可避免用到的,下面我总结一下单利常用的五种写法,话不多说了,来一起看看详细的介绍吧 加载类时创建单利 Java实现 public class Config{ private static Config INSTANCE=new Config...

    Kotlin中单例模式和Java的对比浅析

    Kotlin 中单例模式和 Java 的对比浅析 Kotlin 中单例模式是指在应用程序中确保某个类仅有一个实例,并提供一个全局访问点的机制。单例模式是一种常用的设计模式,在 Java 和 Kotlin 中都有多种实现方式。下面我们将...

    2023年最新java面试大全

    【06期】单例模式有几种写法? 【07期】Redis中是如何实现分布式锁的? 【08期】说说Object类下面有几种方法呢? 【09期】说说hashCode() 和 equals() 之间的关系? 【10期】Redis 面试常见问答 【11期】分布式...

    sql语句中单引号嵌套问题(一定要避免直接嵌套)

    正确的写法应该是: ```sql @condition='ROOMTYPElike ‘‘%标准间%’’ ' ``` 这里,每个内部的单引号都被一对连续的单引号替换,从而正确地转义了字符串内的单引号。 此外,需要注意的是,如果你的代码是在Java...

Global site tag (gtag.js) - Google Analytics