手写java设计模式之单例模式,附源码解读

在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:

1、减少类的频繁创建,减少使用频繁使用new创建实例,减少GC压力。

2、某些应用场景下,使用单例模式,保证整个系统中只会创建一个类。

单例模式分两种:饿汉模式和懒汉模式:

懒汉模式:

java 复制代码
//第一次调用时才初始化,避免内存浪费,线程安全
public class LazySingleton {
    /* 持有私有静态实例,防止被引用,此处赋值为null,目的是实现延迟加载 */
    private static LazySingleton instance = null;

    /* 私有构造方法,防止被实例化 */
    private LazySingleton() {
    }
   //在第一次创建对象的时候需要加锁,之后就不需要了
    public static LazySingleton getInstance() {
        if(null == instance) {
            synchronized (LazySingleton.class) {
                if(null == instance) {
                    instance = new LazySingleton();
                }
            }
        }
        return instance;
    }

}

饿汉模式:

java 复制代码
public class HungerySingleton {
    //类加载时就初始化,避免了线程同步的问题,是线程安全的
    private static HungerySingleton instance = new HungerySingleton();
    private HungerySingleton(){}
    public static HungerySingleton getInstance(){
        return instance;
    }

}
相关推荐
TDengine (老段)2 分钟前
TDengine 数学函数 CRC32 用户手册
java·大数据·数据库·sql·时序数据库·tdengine·1024程序员节
心随雨下21 分钟前
Tomcat日志配置与优化指南
java·服务器·tomcat
Kapaseker27 分钟前
Java 25 中值得关注的新特性
java
wljt30 分钟前
Linux 常用命令速查手册(Java开发版)
java·linux·python
撩得Android一次心动33 分钟前
Android 四大组件——BroadcastReceiver(广播)
android·java·android 四大组件
canonical_entropy37 分钟前
Nop平台到底有什么独特之处,它能用在什么场景?
java·后端·领域驱动设计
chilavert31839 分钟前
技术演进中的开发沉思-174 java-EJB:分布式通信
java·分布式
不是株1 小时前
JavaWeb(后端进阶)
java·开发语言·后端
编程火箭车1 小时前
【Java SE 基础学习打卡】02 计算机硬件与软件
java·电脑选购·计算机基础·编程入门·计算机硬件·软件系统·编程学习路线