原文:
http://xuhengfei.com/notebook/2010/02/java-singleton/
在单例模式中有一种延时实例化方法,
当调用get方法获取单例时,判断是否已经实例化,如果没有,则创建该实例并返回。如果有直接返回。
在这个过程中如果考虑多线程并发问题,我们需要用双重锁定来保证该实例的单一性。
public class Singleton {
private Singleton (){
}
private static Singleton main;
/**
* 双重锁定
* @return
*/
public static Singleton get(){
if(main==null){
synchronized (Singleton.class) {
if(main==null){
main=new Singleton();
}
}
}
return main;
}
public static void main(String[] args) throws Exception{
System.out.println(Singleton.get().toString());
}
@Override
public String toString() {
return "I am Singleton ";
}
}
单例模式的另一种实例化方法是在静态代码块中直接创建实例,这样就不需要考虑多线程的问题了。
public class Singleton {
private Singleton (){
}
private static Singleton main=new Singleton();
}
今天读到一篇创新型的单例设计,记录一下
public class Singleton {
static class SingletonHolder {
static Singleton instance = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.instance;
}
}
分享到:
相关推荐
单例模式是一种设计模式,旨在确保一个类只有一个实例,并提供全局访问点。在单例模式中,类的构造函数是私有的,防止外部直接创建对象,而是通过静态方法获取该类的唯一实例。单例模式的唯一性通常是在进程范围内,...
单例模式是软件设计模式中的一种,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下都非常有用,比如控制数据库连接、日志记录、线程池管理等,确保了资源的有效管理和高效利用。...
"设计模式单例模式和工厂模式综合应用"的主题聚焦于两种常用的设计模式:单例模式和工厂模式,并探讨它们如何协同工作来实现高效、灵活的代码结构。这个主题尤其适用于Java编程语言,因为Java的面向对象特性使得设计...
单例模式是设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。这种模式常用于控制共享资源,如数据库连接池、线程池或者日志系统等,确保这些资源在整个应用程序中只被创建一次。 单例模式的核心...
单例模式的核心在于控制类的实例化过程,常见的实现方式有懒汉式、饿汉式和双重检查锁定(DCL)等。懒汉式是在类被加载时并不创建实例,而是在第一次调用getInstance方法时才创建;饿汉式则是在类加载时就创建实例,...
单例模式是软件设计模式中的一种基础且广泛应用的模式,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在系统中需要频繁创建和销毁对象,且对象创建成本较高,或者需要共享资源的情况下非常...
单例模式是一种常用的设计模式,它的核心思想是在整个应用程序中,一个类只能有一个实例存在。单例模式常用于控制资源的共享,例如数据库连接池、日志服务等。单例模式有多种实现方式,常见的包括懒汉式、饿汉式以及...
3. **双重检查锁定(DCL,Double Check Locking)单例模式**:结合了饿汉模式和懒汉模式的优点,既延迟了初始化,又保证了线程安全。在多线程环境下,只有在`instance`为`null`时才会进入同步块,避免了不必要的同步...
在Java中,可以使用双重检查锁定(Double-Check Locking)来实现线程安全的单例: ```java public class Singleton { private static volatile Singleton instance; private Singleton() {} public static ...
C++单例设计模式,单例模式 C++单例设计模式,单例模式
3、懒汉式单例(双重检查锁定) public class Singleton3 { private Singleton3() {} private static Singleton3 single = null; public static Singleton3 getInstance() { if (single == null) { ...
单例模式是软件设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。在C#中,单例模式常用于管理共享资源或控制类的实例化过程,以提高性能、节约系统资源,特别是在整个应用程序生命周期内只需要一...
单例模式是软件设计模式中的一种经典模式,用于确保一个类只有一个实例,并提供一个全局访问点。在Java中,有多种实现单例模式的方法,每种都有其特点和适用场景。接下来,我们将深入探讨这些实现方式。 首先,我们...
单例模式是软件设计模式中的一种经典模式,它在许多场景下被广泛使用,尤其是在需要全局唯一实例的情况下。本文将深入探讨单例模式的概念、作用、实现方式以及其在实际编程中的应用。 单例模式的核心思想是确保一个...
在C++编程中,单例模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供一个全局访问点。线程安全的单例模式在多线程环境下尤其重要,因为不正确的实现可能导致多个线程创建多个实例,这违反了单例模式...
单例模式是软件设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。在C++中,实现单例模式有多种方法,我们将会深入探讨这一模式的原理、优缺点以及如何在实际编程中应用。 单例模式的核心在于...
李建忠老师的设计模式-单例模式讲解,示例以C++编程语言呈现。
单例模式是软件设计模式中的一种经典模式,其核心思想在于限制类的实例化过程,确保在整个应用程序中只有一个实例存在。这种模式常用于管理共享资源,例如数据库连接、线程池或者全局配置等,以避免资源浪费和状态...
在Java中,懒汉式的单例模式通常通过双重检查锁定(Double-Check Locking,DCL)来实现,这是一种线程安全的方式。下面是一个简单的DCL实现的懒汉式单例模式代码示例: ```java public class Singleton { private ...
在Java中,实现单例模式有多种方法,包括懒汉式(线程不安全)、饿汉式、双重检查锁定(DCL)以及枚举方式。其中,DCL和枚举方式是推荐的,因为它们既保证了线程安全,又避免了不必要的同步开销。 单例模式的Java...