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

版权声明:原创文章欢迎转载,不过要记得加出处哦 https://blog.csdn.net/wljk506/article/details/78451361

用VC++6.0制作图片屏幕保护程序

   VC++可谓神通广大,如果学到家了,或者就掌握了那么一点MFC,你也会感到它的方便快捷,当然最重要的是功能强大。不是吗,从最基本的应用程序.EXE到动态连接库DLL,再由风靡网上的ActiveX...
  • ghj1976
  • ghj1976
  • 2000-12-14 18:32:00
  • 2068

高并发下线程安全的单例模式(最全最经典)

在所有的设计模式中,单例模式是我们在项目开发中最为常见的设计模式之一,而单例模式有很多种实现方式,你是否都了解呢?高并发下如何保证单例模式的线程安全性呢?如何保证序列化后的单例对象在反序列化后任然是单...
  • cselmu9
  • cselmu9
  • 2016-05-11 00:32:23
  • 77068

Java设计模式(二):单例模式的5种实现方式,以及在多线程环境下5种创建单例模式的效率

这段时间从头温习设计模式。记载下来,以便自己复习,也分享给大家。 package com.iter.devbox.singleton; /** * 饿汉式 * @author Shearer...
  • hardwin
  • hardwin
  • 2016-05-23 12:14:59
  • 1263

设计模式——单例模式(Java)——考虑多线程环境下的线程安全问题

设计模式——单例模式(Java)——考虑多线程环境下的线程安全问题 一:单例模式概念 单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类...
  • ly969434341
  • ly969434341
  • 2016-05-10 21:38:42
  • 2815

JAVA多线程单例模式及死锁

------- android培训、java培训、期待与您交流! ----------     上一篇我总结了创建多线程的两种方式(继承Thread类与实现Runnable接口),及多线程的不安...
  • Austin_yudao
  • Austin_yudao
  • 2012-11-22 10:07:48
  • 915

java集群优化——多线程下的单例模式

在最初学习设计模式时,我为绝佳的设计思想激动不已,在以后的工程中,多次融合设计模式,而在当下的设计中,我们已经觉察出了当初设计模式的高瞻远瞩,但是也有一些不足,需要我们去改进,有人说过,世界上没有绝对...
  • xvshu
  • xvshu
  • 2015-07-28 17:13:23
  • 3197

单例模式在多线程中的使用情况

上述代码中,如果直接用于多线程中是存在问题的,比如线程A调用MyThreadScopeData.getInstance()获取MyThreadScopeData对象,执行到 instance = ne...
  • l1028386804
  • l1028386804
  • 2014-05-24 22:33:57
  • 5015

【Java 单例模式】Java 单例模式在多线程环境中可能存在的问题

在多线程环境下,使用延迟加载的方式实现单例模式,会出现错误。 例如,使用如下方式实现单例类:package study20170307;/** * Created by apple on 17/3...
  • u013177446
  • u013177446
  • 2017-03-07 18:08:29
  • 541

日常小结-多线程的单例模式的三种实现方式

多线程单例模式在很多并发的书里面都有写。单例模式的分类饿汉模式:类初始化的时候就进行创建单例模式 懒汉模式:在调用getinstance方法的时候才创建单例;懒汉模式的问题在多线程的情况下可能会有多...
  • u011518120
  • u011518120
  • 2016-10-25 16:28:53
  • 1356

JAVA多线程之单例模式

JAVA 单例模式介绍,单例模式中涉及的多线程问题
  • hapjin
  • hapjin
  • 2016-01-24 11:20:45
  • 1145
收藏助手
不良信息举报
您举报文章:java 多线程单例模式
举报原因:
原因补充:

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