java 多线程单例模式

原创 2017年11月05日 19:25:12

风.foxwho

方法案例1 推荐 使用静态内置类实现

public class Singleton {
    //私有的静态内部类,该类只能在 newInstance 方法中被使用
    private static class SingletonHolder{
        // 静态变量
        public static Singleton instance =new Singleton();
    }
    private Singleton(){}
    //实例化
    public static Singleton newInstance(){
        //使用私有静态内部类中的instance静态字段
        return SingletonHolder.instance;
    }
}

java 加载机制
第一次访问类中的静态字段时,会触发类加载,并且同一个类只加载一次。静态内部类也是如此,类加载过程有类加载器负责枷锁,从而保证线程安全

方法案例2 双检查锁机制

public class Singletion{
    // 使用volatile 关键字
    private static volatile Singleton instance=null;
    private Singleton(){}

    public static Singleton getInstance(){
        //双重检测
        if(instance==null){
            synchronized(Singleton.class){
                if(instance==null){
                    instance = new Singleton();
                }
            }
        }
    }
}

volatile关键字意思是禁止指令的重排序优化,从而保证 instance 字段被初始化时,单例对象已经被完全初始化。

更多 模式 请看

http://blog.csdn.net/cselmu9/article/details/51366946

版权声明:原创文章欢迎转载,不过要记得加出处哦

相关文章推荐

Java单例模式与多线程

该篇博客,将会通过单例模式和多线程技术相结合的方式来学习,在此期间,我们会遇到之前没有考虑过的情况,那么,废话不多说,先来看看,实现单例模式的两种方法饿汉模式public class MyObject...

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

在Java开发中,如果某个实例的创建需要消耗很多系统资源,那么我们通常会使用惰性加载机制,也就是说只有当使用到这个实例的时候才会创建这个实例,这个好处在单例模式中得到了广泛应用。该机制在single-...

java 单例模式剖析(涉及同步,Junit,log4j,反射,类载入器,多线程,序列化)

概要 单例模式是最简单的设计模式之一,但是对于Java的开发者来说,它却有很多缺陷。在本月的专栏中,David Geary探讨了单例模式以及在面对多线程(multithreading)、类装载器(...

Java基础:多线程下的单例模式

单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。但在多线程环境下,就可能会产生问题,并不一定能保证只有一个实例。...

java多线程环境单例模式实现详解

Abstract          在开发中,如果某个实例的创建需要消耗很多系统资源,那么我们通常会使用惰性加载机制,也就是说只有当使用到这个实例的时候才会创建这个实例,这个好处在单例模式中得到...

Java多线程环境下单例模式实现

单例模式是一种常用的设计模式,单例对象通常作为程序中的存放配置信息的载体,以保证其他对象读到一致的信息。 在某个服务器程序中,服务器的配置信息可能存放在数据库或文件中,其他对象要取得这些信息只需要访问...

黑马程序员--Java基础--多线程创建及单例模式

----------------------Android培训、Java培训、期待与您交流! ----------------------  进程:是一个正在执行中的程序。 每一个进程执行都有一个执...

Java 多线程下的单例模式的设计

单例模式我们在代码设计中会经常用到。但是在多线程情况下,如果没有贴别处理,往往结果并非我们所期望的。一般单例模式的代码如下:public class Singleton{ private st...

Java 多线程下的单例模式

单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。正是由于这个特 点,单例对象通常作为程序中的存放配置信息的载体,因为它能保证...

探究java多线程中正确的单例模式 volatile关键字

关键点是volite关键字的作用 单例模式的实现: 1.饿汉模式 public class Singleton { private static Singleton instance=new ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java 多线程单例模式
举报原因:
原因补充:

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