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 单例模式】Java 单例模式在多线程环境中可能存在的问题

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

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

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

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

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

JAVA多线程之单例模式

JAVA 单例模式介绍,单例模式中涉及的多线程问题
  • hapjin
  • hapjin
  • 2016年01月24日 11:20
  • 1105

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

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

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

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

Java单例模式与多线程

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

单例模式的多线程安全支持(C++)

单例模式的多线程支持,可以分两种类型。 1、懒汉模式 C++11要求编译器保证内部静态变量的线程安全性,可以不加锁。但C++11以前,仍需要加锁。 Lock/UnLock可以采用boos...
  • segen_jaa
  • segen_jaa
  • 2016年01月14日 18:03
  • 1388

线程安全的单例模式-以C++代码为例

本文描述3种场景下的单例模式: 进程体内无线程的单例模式 进程体内多线程单例模式 在单个线程体中的单例模式...
  • Zuocheng_Liu
  • Zuocheng_Liu
  • 2016年04月15日 11:16
  • 1933

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

上述代码中,如果直接用于多线程中是存在问题的,比如线程A调用MyThreadScopeData.getInstance()获取MyThreadScopeData对象,执行到 instance = ne...
  • l1028386804
  • l1028386804
  • 2014年05月24日 22:33
  • 4841
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java 多线程单例模式
举报原因:
原因补充:

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