`
hzy3774
  • 浏览: 992910 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

Java中单例模式的几种常用方法

 
阅读更多

饿汉模式,易于理解,类被加载时就要初始化:

public class Singleton {
	private static final Singleton mInstance = new Singleton();
	
	private Singleton(){}
	
	public static Singleton getInstance(){
		return mInstance;
	}
}

 简单懒汉模式,运行时加载,控制线程同步,但同步造成阻塞:

 

public class Singleton {
	private static Singleton mInstance;
	
	private Singleton(){}
	
	public static synchronized Singleton getInstance(){
		if (mInstance == null) {
			mInstance = new Singleton();
		}
		return mInstance;
	}
}

 双重检查可以避免过多阻塞:

 

public class Singleton {
    private static Singleton mInstance;

    private Singleton() {
    }

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

 通过内部静态类Holder来维护单例:

 

public class Singleton {
    private Singleton() {
    }

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

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

 使用枚举实现单例:

public enum Singleton {

    INSTANCE;

    private Singleton() {
    }

}

 好简单有木有。

分享到:
评论

相关推荐

    JAVA中单例模式的几种实现方式.doc

    ### JAVA中单例模式的几种实现方式 #### 1. 线程非安全的基本实现方式 单例模式是设计模式中的一种常用形式,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。在Java中,单例模式可以通过多种方式来...

    浅谈Java中单例设计模式之构造方法私有化.pdf

    "浅谈Java中单例设计模式之构造方法私有化" 单例设计模式是 Java 中一种常用的设计模式,核心思想是将类的构造方法私有化,以控制实例化对象的产生。这种模式可以确保在程序中只有一个实例化对象存在,这对控制对象...

    Java多线程编程环境中单例模式的实现

    ### Java多线程编程环境中单例模式的实现 #### 概述 单例模式是一种常用的软件设计模式,它确保一个类只有一个实例,并提供一个全局访问点。在Java中,单例模式的应用非常广泛,特别是在资源管理、日志记录、...

    java单例模式实例

    在Java中,有多种实现单例模式的方法,每种都有其特点和适用场景。接下来,我们将深入探讨这些实现方式。 首先,我们来看**懒汉式(Lazy Initialization)**。这种实现方式是在类被首次请求时才创建单例对象,延迟...

    java 中单例模式饿汉式与懒汉式的对比

    java 中单例模式饿汉式与懒汉式的对比 java 中单例模式是保证一个类仅有一个实例,并提供一个访问它的全局访问点的设计模式。单例模式有以下特点:单例类只能有一个实例,单例类必须自己自己创建自己的唯一实例,...

    Java中单例模式详解

    在Java中,实现单例模式主要有三种方式:懒汉式、饿汉式和登记式。 **懒汉式单例**: 懒汉式单例的特点是在类第一次被使用时才创建实例,延迟加载,以节省资源。然而,非线程安全的懒汉式单例在多线程环境下可能...

    基于php设计模式中单例模式的应用分析

    单例模式是软件设计模式中的一种,它的核心思想是确保某个类在整个应用程序中只有一个实例存在。在PHP中,单例模式常用于管理共享资源,如数据库连接或全局配置,以优化性能并提供统一的访问入口。 单例模式的实现...

    Java中单例模式的7种写法

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

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

    单例模式是一种常用的设计模式,在 Java 和 Kotlin 中都有多种实现方式。下面我们将对比 Kotlin 中单例模式和 Java 中单例模式的实现方式。 一、懒人写法(恶汉式) 在 Java 中,懒人写法是最简单的单例模式实现...

    c++中单例模式对象的释放控制

    在C++编程领域,设计模式是解决特定问题的模板,其中单例模式(Singleton Pattern)是一种常用的创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点。然而,在C++中实现单例模式时,如何正确管理这个...

    python中单例常用的几种实现方法总结

    Python 的模块就是天然的单例模式,下面这篇文章主要给大家介绍了关于python中单例常用的几种实现方法,文中通过示例代码介绍的非常详细,对大家学习或者使用python单例具有一定的参考学习价值,需要的朋友们一起来...

    基于Python中单例模式的几种实现方式及优化详解

    ### 基于Python中单例模式的几种实现方式及优化详解 #### 一、单例模式概述 单例模式(Singleton Pattern)是面向对象设计模式中的一种,其主要目标是在整个应用程序中确保一个类只有一个实例,并提供一个全局访问...

    Java中单表和多表级联的增删改查

    "Java中单表和多表级联的增删改查"这个主题涵盖了基础的数据库操作以及更复杂的关联查询技术。以下是对这些知识点的详细解释: 1. **单表的增删改查(CRUD)**: - **Create(创建)**: 在Java中,通常使用JDBC...

    深入解析Java的设计模式编程中单例模式的使用

    在Java中,实现单例模式通常有两种方式:饿汉式单例和懒汉式单例。 **饿汉式单例**: 饿汉式单例在类加载时就完成了初始化,因此类加载时间较长,但获取实例的速度非常快,且线程安全。代码如下: ```java public ...

    Python中单例模式总结

    一、单例模式的四种实现方法: 1. 类方法实现: 在Python中,可以定义一个类方法来实现单例。类方法`instance()`检查类属性`_instance`是否已存在,如果不存在,则创建一个新的实例并将其存储。这样,每次调用`...

    单例模式实现mdi界面子窗体控制

    首先向关注过我这个系列...这立刻让我想到了最常用也是最简单最容易理解的一个设计模式 单例模式 何为 单例模式 ? 故名思议 即 让 类 永远都只能有一个实例。 由于 示例代码 比较简单 我也加了注释,这里就不在赘述

    PHP中单例模式的使用场景与使用方法讲解

    单例模式主要有三种实现方式:懒汉式单例、饿汉式单例、登记式单例。懒汉式单例是延迟加载实例,只有在第一次调用时才初始化实例;饿汉式单例是在类加载时就完成了初始化,访问时不需要等待初始化;登记式单例是通过...

Global site tag (gtag.js) - Google Analytics