java的单例设计模式

Java中的单例设计模式是一种创建对象的设计模式,用于保证在整个应用程序的生命周期中只创建一个实例对象。

在Java中,有多种方式可以实现单例设计模式,以下是最常用的几种方式:

  1. 饿汉式单例模式:在类加载时就创建实例对象。该方式保证了线程安全,但是在整个应用程序生命周期中都会存在实例对象,可能会占用较多的内存空间。
java 复制代码
public class Singleton {
    private static final Singleton instance = new Singleton();

    private Singleton() {
    }

    public static Singleton getInstance() {
        return instance;
    }
}
  1. 懒汉式单例模式:在第一次访问时才创建实例对象。该方式在多线程环境下可能存在线程安全问题,需要进行额外的线程安全处理。
java 复制代码
public class Singleton {
    private static Singleton instance;

    private Singleton() {
    }

    public static synchronized Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}
  1. 双重检验锁单例模式:在第一次访问时才创建实例对象,并使用双重检验锁来确保线程安全。
java 复制代码
public class Singleton {
    private volatile static Singleton instance;

    private Singleton() {
    }

    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}
  1. 静态内部类单例模式:使用静态内部类来实现单例模式,确保懒加载和线程安全。
java 复制代码
public class Singleton {
    private Singleton() {
    }

    private static class SingletonHolder {
        private static final Singleton instance = new Singleton();
    }

    public static Singleton getInstance() {
        return SingletonHolder.instance;
    }
}

上述是Java中常用的几种单例设计模式的实现方式,根据具体的需求和场景选择合适的方式。

相关推荐
艾菜籽9 分钟前
Spring MVC练习:留言板
java·spring·mvc
Tiny_React10 分钟前
智能体设计模式-附录 C - 智能体框架快速概览
设计模式
左灯右行的爱情25 分钟前
4-Spring SPI机制解读
java·后端·spring
Code小翊26 分钟前
C语言bsearch的使用
java·c语言·前端
yong999026 分钟前
C#驱动斑马打印机实现包装自动打印
java·数据库·c#
好记忆不如烂笔头abc27 分钟前
linux系统记录登录用户的所有操作
java·linux·服务器
sp421 小时前
一套清晰、简洁的 Java AES/DES/RSA 加密解密 API
java·后端
野犬寒鸦1 小时前
从零起步学习MySQL || 第五章:select语句的执行过程是怎么样的?(结合源码深度解析)
java·服务器·数据库·后端·mysql·adb
橘子海全栈攻城狮1 小时前
【源码+文档+调试讲解】基于SpringBoot + Vue的知识产权管理系统 041
java·vue.js·人工智能·spring boot·后端·安全·spring
Chloeis Syntax1 小时前
接10月12日---队列笔记
java·数据结构·笔记·队列