单例模式,双重校验的懒汉式

/**
 * 单例模式,双重校验的懒汉式
 */
public class bTestSingleton {
    public static void main(String[] args) {
        Singleton s1 = Singleton.getInstance();
        Singleton s2 = Singleton.getInstance();
        System.out.println(s1==s2);
    }
}

class Singleton{
    private  Singleton(){

    }

    private static Singleton instance = null;

    public static Singleton getInstance(){
        if(instance==null) {   //为了不让其他的做无谓的等待,不是空的话直接返回
            synchronized (Singleton.class) {  //线程安全
                if (instance == null) {       //是空的时候 创建
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

原文地址:https://www.cnblogs.com/liyao0312/p/11622658.html

时间: 2024-10-19 17:22:27

单例模式,双重校验的懒汉式的相关文章

双重校验锁实现单例模式(对象单例,线程安全)

双重校验锁实现单例模式: public class Singleton { //采用volatile修饰 private volatile static Singleton singleton; //构造方法私有化 private Singleton(){} //双重校验锁 public static Singleton getInstance(){ //先判断对象是否已经实例过,没有实例化过才进入加锁代码 if(singleton == null){ //类对象加锁 synchronized(

双重校验的单例模式

package com.loujin.utils; /** * 基于volatile的双重检查单例模式 * @author jin * */ public class SaveDoubleCheckLocking { private volatile static SaveDoubleCheckLocking instance; public static SaveDoubleCheckLocking getInStance(){ if(instance==null){ synchronized

Java设计模式之单例模式(恶汉式和懒汉式)

/* * 单例模式: *         饿汉式:类一加载就创建对象 *         懒汉式:用的时候,才去创建对象 * 面试题:单例模式的思想是什么?写一个代码体现(我们最好写懒汉式的单例模式给面试官,这个才是他想要的答案) *         开发使用:恶汉式(是不会出问题的单例模式) *         面试时写懒汉式(可能会出现问题的单例模式) *             A:懒汉式(延迟加载) *             B:线程安全问题 *                 a:是

Java单例模式《二》懒汉式

1 package com.study.mode; 2 /** 3 * 单例模式: 懒汉式,需要的时候创建. 4 * @ClassName: SingleBean2 5 * @author BlueLake 6 * @date 2012年9月5日 下午9:08:21 7 */ 8 public class SingleBean2 { 9 10 //1.私有化构造方法. 11 private SingleBean2(){ 12 13 } 14 //2.创建一个当前类的静态属性 15 private

[转]设计模式--单例模式(一)懒汉式和饿汉式

单例模式是设计模式中比较简单的一种.适合于一个类只有一个实例的情况,比如窗口管理器,打印缓冲池和文件系统, 它们都是原型的例子.典型的情况是,那些对象的类型被遍及一个软件系统的不同对象访问,因此需要一个全局的访问 指针,这便是众所周知的单例模式的应用.当然这只有在你确信你不再需要任何多于一个的实例的情况下. 单例模式的用意在于前一段中所关心的.通过单例模式你可以: 一.确保一个类只有一个实例被建立 二.提供了一个对对象的全局访问指针 三.在不影响单例类的客户端的情况下允许将来有多个实例 经典的单

单例模式实现方法之懒汉式、饿汉式

Singleton 单例模式是一种经常在项目开发中使用的程序设计模式,它用于创建一个全局共享的实例对象.该实例对象在整个应用程序中只有一个,不会出现更多的该实例对象. 实现原理就是将类的构造方法私有化,即使用private修饰符来修饰构造方法,这样外部就不能使用构造方法创建对象了,本类内部还是能够创建对象的,所以,可以创建一个本类类型的成员变量来保存本类的唯一对象,然后提供属性访问器方法获取这个唯一的实例,但是每次获取的都是同一个对象,而不是重新创建的. 接下来将介绍两种比较常用方法来实现单例模

单例模式-双重检查加锁

(参考:http://www.cnblogs.com/java-my-life/archive/2012/03/31/2425631.html) 双重检查加锁: (1)既实现线程安全,又能够使性能不受很大的影响.那么什么是“双重检查加锁”机制呢? (2)所谓“双重检查加锁”机制,指的是:并不是每次进入getInstance方法都需要同步,而是先不同步,进入方法后,先检查实例是否存在,如果不存在才进行下面的同步块,这是第一重检查,进入同步块过后,再次检查实例是否存在,如果不存在,就在同步的情况下创

设计模式之(三)——单例模式

单例模式: 根据单例模式的设计思想,就是想保证类只有一个实例即只有一个对象.而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源等. 一般出现的场景是: 1.资源共享的情况下,避免由于资源操作时导致的性能或损耗等.如记录系统日志文件,共享配置文件的读取. 2.控制资源的情况下,方便资源之间的互相通信.如线程池,数据库连接池等. 实现方法很多种: 1.饿汉式: public class SingletonTest { private static SingletonTest instan

Java 并发学习总结

目录 基础篇 进阶篇 并发编程的的三个概念(特性)? JMM(Java 内存模型) volatile 关键字 1. Java 内存模型(为什么要有 volatile) 2. volatile 原理 追加字节性能优化 synchronized 关键字 说一下对 Synchronized 的理解 synchronized 的三种应用 双重检验锁方式实现单例模式 synchronized 底层原理 synchronized 如何实现内存可见性 Java 对象头 JDK1.6 之后 synchroniz