单例
来源:互联网 发布:马来西亚 穆斯林 知乎 编辑:程序博客网 时间:2024/04/29 16:31
/** * 懒汉模式,饱汉式* @author 冒云龙 * @date 2017年4月17日 下午8:28:34 * @describe *///多线程会出现问题,可以在方法上加synchronized,但会大大影响性能public class Singleton {private static Singleton uniqueSingleton;//利用一个静态变量来记录Singleton的唯一实例private Singleton(){//把构造器声明为私有的,只有Singleton类内才能调用构造器}public static Singleton getInstance(){//可以通过类名调用if(uniqueSingleton==null){//用getInstance()去实例化对象,并返回这个实例uniqueSingleton= new Singleton();}//如果实例不存在就会创建,不需要这个实例就永远不会创建(延迟实例化)return uniqueSingleton;}//这里是其他方法}
/** * 饿汉模式,静态初始化时就创建了,保证了线程安全* @author 冒云龙 * @date 2017年4月17日 下午8:28:34 * @describe */public class Singleton {private Singleton(){}private static Singleton uniqueSingleton = new Singleton();public static Singleton getInstance(){return uniqueSingleton;}}
/** * 懒汉模式,双重检查枷锁* @author 冒云龙 * @date 2017年4月17日 下午8:28:34 * @describe */public class Singleton {private volatile static Singleton unqiueInstance;//voiatile关键字确保,当uniqueInstance被初始化成Singleton实例时,多个线程正确的处理unqiueInstanceprivate Singleton(){}public static Singleton getInstance(){if(unqiueInstance==null){//检查实例,如果不存在就进入同步区synchronized (Singleton.class) {//只有第一次才彻底执行这一块的代码if(unqiueInstance==null){//再检查一次,如果仍是null,才创建unqiueInstance = new Singleton();}}}return unqiueInstance;}}
阅读全文
0 0
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- yum本地源配置
- 第139课: Spark面试经典系列之数据倾斜解决之对于两个RDD数据量都很大且倾斜的Key特别多如何解决?
- halcon学习之常用数组操作算子
- leveldb(四):Cache
- 安卓之手势检测
- 单例
- 线段树优化连边,Dijkstra(In Touch,HDU 5361)
- 1 Two sum
- spring 基于注解的自动装配
- Android-01
- numpy合并多维矩阵、list的扩展
- [机器学习入门] 李宏毅机器学习笔记-25(Sturctured Linear Model;结构化预测-线性模型)
- 本地YUM源制作
- [LeetCode] 445. Add Two Numbers II