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

Java单例模式最常见的三种

阅读更多

第一种,最普遍的,未加锁。

public class Singleton2 {
	
	private Singleton2(){
		System.out.println("This is Singleton2's instance.");
	};
	
	private static Singleton2 instance = null;
	
	public static Singleton2 getInstance(){
		if(instance == null) {
			instance = new Singleton2();
		}
		return instance;
	}
}

 这种情况未加锁,可能会产生数据错误,比如两个同时新生成的对象,一个把对象数据改变了,而另一个使用的没改变之前的。

 

第二种,加锁。

public class Singleton1 {
	
	private Singleton1(){
		System.out.println("This is Singleton1's instance.");
	}
	
	private static Singleton1 instance = null;

	public static Singleton1 getInstance2() {
		if(instance == null){   //1
			synchronized (Singleton1.class) {  //2
				if(instance == null) {
					instance = new Singleton1();
				}
			}
		}
		return instance;
	}
	
}

 这种只会在第一次的时候产生阻塞,之后每实例一次对象,就会在第1步时跳过去,在第一次实例的时候,会在第2步那里产生阻塞,以后就不会了,这种最好。

 

第三种,加锁,会产生阻塞。

public class Singleton1 {
	
	private Singleton1(){
		System.out.println("This is Singleton1's instance.");
	}
	
	private static Singleton1 instance = null;
	
	public static synchronized Singleton1 getInstance(){  //1
		
		if(instance == null){
			instance = new Singleton1();
		}
		return instance;
	}
}

 多线程的时候会在1这里产生阻塞。

 

分享到:
评论

相关推荐

    Java 单例模式 工具类

    Java中的单例模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供全局访问点。在Java编程中,单例模式常用于控制资源的访问,比如数据库连接池、线程池或者日志对象等。本篇文章将深入探讨如何在Java中...

    java单例模式实例

    Java单例模式是一种常见的设计模式,它在软件工程中用于保证一个类只有一个实例,并提供一个全局访问点。这种模式在需要频繁创建和销毁对象的场景下尤其有用,因为它可以节省系统资源并提高性能。在Java中,有多种...

    java单例模式及实现

    Java单例模式是一种常见的设计模式,确保某一个类只有一个实例,而且向这个系统提供这个实例。单例模式可以分为三种:懒汉式单例、饿汉式单例、登记式单例。 单例模式的要点 1. 某个类只能有一个实例 2. 它必须...

    Java单例模式深入理解

    Java单例模式是一种设计模式,它允许在程序中创建唯一一个类实例,通常用于管理共享资源,例如数据库连接、线程池或者配置对象等。单例模式的核心在于限制类的构造函数,确保类只能被初始化一次,从而实现全局唯一的...

    java单例模式开发的7种写法

    本文将详细介绍七种常见的Java单例模式实现方式。 #### 第一种:懒汉式,线程不安全 ```java public class Singleton { private static Singleton instance; private Singleton() {} public static Singleton ...

    JAVA单例模式(三种)

    Java单例模式是一种常用的软件设计模式,它的核心思想是确保一个类只有一个实例,并提供全局访问点。在Java编程中,单例模式被广泛应用于控制资源的共享,例如数据库连接池、线程池或者日志系统等。在本篇文章中,...

    Java设计模式之单例模式的七种写法

    Java设计模式之单例模式的七种写法 单例模式是一种常见的设计模式,它确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机的驱动程序对象常...

    java单例模式连接数据库源码

    Java单例模式是一种设计模式,它保证一个类只有一个实例,并提供一个全局访问点。在数据库连接管理中,使用单例模式能有效控制资源,避免频繁创建和关闭数据库连接导致的性能损失和资源浪费。以下是对Java单例模式...

    java单例模式的例子

    Java单例模式是一种常见的设计模式,它在软件工程中用于控制类的实例化过程,确保一个类只有一个实例,并提供一个全局访问点。这种模式在系统资源管理、缓存、日志记录等方面应用广泛。下面我们将深入探讨Java单例...

    设计模式单例模式和工厂模式综合应用

    "设计模式单例模式和工厂模式综合应用"的主题聚焦于两种常用的设计模式:单例模式和工厂模式,并探讨它们如何协同工作来实现高效、灵活的代码结构。这个主题尤其适用于Java编程语言,因为Java的面向对象特性使得设计...

    java设计模式之单例模式.zip

    在这些模式中,单例模式是最为广泛使用的一种。单例模式确保一个类只有一个实例,并提供一个全局访问点,使得在整个应用程序中,无论何处都可以方便地调用这个唯一的实例。 单例模式的主要优点在于它可以控制实例化...

    7种单例模式

    下面将详细介绍七种常见的单例模式实现方式,并结合多线程环境和反序列化测试进行讨论。 1. **饿汉式单例**: 这是最简单的单例实现,它在类加载时就创建了实例,因此是线程安全的。 ```java public class ...

    java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂

    例如,MVC模式在Web应用开发中非常常见,单例模式常用于日志服务、数据库连接池等需要全局唯一的场景,代理模式可以用于数据访问控制,工厂模式则用于解耦对象的创建和使用。通过学习和实践这些模式,开发者可以更好...

    单例模式Java实现

    以上就是Java中实现单例模式的常见方法,每种方式都有其适用场景和优缺点。在实际开发中,我们需要根据项目需求选择合适的方式实现单例。同时,理解单例模式背后的原理和应用场景,有助于提升代码的设计质量。

    三种工厂设计模式和两种单例模式

    在本文中,我们将深入探讨三种工厂设计模式——简单工厂模式、抽象工厂模式和工厂方法模式,以及两种单例模式——饿汉单例模式和懒汉单例模式。这些模式都是面向对象设计中的重要组成部分,对于理解和构建可维护、可...

    设计模式之单例模式(结合工厂模式)

    单例模式是软件设计模式中的一种经典模式,它保证了类只有一个实例存在,并提供一个全局访问点。在Java等面向对象编程语言中,单例模式常用于管理共享资源,如数据库连接池、线程池或者配置文件等。结合工厂模式,...

    java-单例模式几种写法

    以下是对这六种常见单例模式实现方式的详细解释: 1. **饿汉式(静态常量)** 这是最简单的单例实现,它在类加载时就创建了实例,线程安全。 ```java public class Singleton { private static final Singleton...

    java中的单例模式

    单例模式是设计模式中的一种,它在Java编程中被广泛应用,特别是在需要全局共享资源或者控制实例数量的情况下。单例模式的基本思想是确保一个类在任何情况下都只有一个实例,并提供一个全局访问点来获取这个唯一的...

Global site tag (gtag.js) - Google Analytics