/** * 单例模式的五种写法: * 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单例模式实现方式: 1. **懒汉式(非线程安全)**: 这是最简单的实现,延迟初始化,但在多线程...
单利模式是写代码过程中不可避免用到的,下面我总结一下单利常用的五种写法,话不多说了,来一起看看详细的介绍吧 加载类时创建单利 Java实现 public class Config{ private static Config INSTANCE=new Config...
Kotlin 中单例模式和 Java 的对比浅析 Kotlin 中单例模式是指在应用程序中确保某个类仅有一个实例,并提供一个全局访问点的机制。单例模式是一种常用的设计模式,在 Java 和 Kotlin 中都有多种实现方式。下面我们将...
【06期】单例模式有几种写法? 【07期】Redis中是如何实现分布式锁的? 【08期】说说Object类下面有几种方法呢? 【09期】说说hashCode() 和 equals() 之间的关系? 【10期】Redis 面试常见问答 【11期】分布式...
正确的写法应该是: ```sql @condition='ROOMTYPElike ‘‘%标准间%’’ ' ``` 这里,每个内部的单引号都被一对连续的单引号替换,从而正确地转义了字符串内的单引号。 此外,需要注意的是,如果你的代码是在Java...