Java设计模式_单例设计模式

翻译 2017年02月28日 20:40:20
/**
 * 单例设计模式:饿汉式,不适用于多线程,效率低
 */
public class SingleTest {
    //定义一个私有的构造方法
    private SingleTest()
    {}
    //将自身的实例对象设置成静态 final
    private static final SingleTest instance = new SingleTest();
    private static SingleTest getInstance(){
        return instance;

}

}

/**
 * 单例设计模式:饱汉式,非线程安全
 */
public class SingleTest {
    //定义一个私有的构造方法
    private SingleTest()
    {}
    //将自身的实例对象设置成静态(不初始化,没有final修饰)
    private static  SingleTest instance ;
    private static SingleTest getInstance(){
        if(instance==null)
            instance = new SingleTest();
        return instance;
    }
}
/**
 * 单例设计模式:饱汉式,线程安全,效率不高
 */
public class SingleTest {
    //定义一个私有的构造方法
    private SingleTest()
    {}
    //将自身的实例对象设置成静态(不初始化,没有final修饰)
    private static  SingleTest instance ;
    private static synchronized SingleTest getInstance(){
        if(instance==null)
            instance = new SingleTest();
        return instance;
    }
}

/**
 * 单例设计模式:饱汉式,最优解
 */
public class SingleTest {
    //定义一个私有的构造方法
    private SingleTest()
    {}
    //将自身的实例对象设置成静态(不初始化,没有final修饰,使用volatile保证了线程访问时instance变量的可见性,
    // 避免了instance初始化时其他属性还没赋值完时被另外的线程调用)
    private static  volatile  SingleTest instance ;
    private static  SingleTest getInstance(){
        // 对象实例化时与否判断(不使用同步代码块,instance不等于null时,直接返回对象,提高运行效率)
        if(instance==null)
        {
            //同步代码块(对象未初始化时,使用同步代码块,保证多线程访问时对象在第一次创建后,不再重复被创建)
            synchronized (SingleTest.class)
            {
                //未初始化,则初始instance变量
                if(instance==null)
                    instance = new SingleTest();
            }
        }
        return instance;
    }
}


相关文章推荐

java 单例设计模式

  • 2014-10-07 11:08
  • 126KB
  • 下载

java单例设计模式

  • 2015-04-22 21:10
  • 73KB
  • 下载

设计模式——单例(Java实现)

1. 前言单例(Singleton)应该是开发者们最熟悉的设计模式了,并且好像也是最容易实现的——基本上每个开发者都能够随手写出——但是,真的是这样吗?作为一个Java开发者,也许你觉得自己对单例模式...

java单例设计模式的好处

  • 2013-04-19 14:59
  • 140KB
  • 下载

JAVA之旅(十四)——静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制

JAVA之旅(十四)——静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制 JAVA之旅,一路有你,加油! 一.静态同步函数的锁是cl...

Java的单例设计模式

java单例设计模式

  • 2016-07-31 22:32
  • 20KB
  • 下载

3-2-Java多线程-案例-单例设计模式出现的问题

单例设计模式出现的问题代码示例class Demo implements Runnable{ public void run() { Single.getInstance();...

java编写一个延迟加载的单例设计模式

package com.itheima; /** * 编写一个延迟加载的单例设计模式 * @author Administrator */ //懒汉式单例模式是延迟加载的单例设计模式 pub...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)