安卓之单例模式讲解

作者: 大白栈 | 来源:发表于2016-05-09 11:24 被阅读284次

为什么我们要使用单例模式呢?

单例模式主要是为了避免因为创建太多的实例从而造成资源浪费,而且多个实例的多次调用可能会造成错误,因而使用单例模式来解决这一类问题

饿汉式

饿汉式指的是单例的实例在类装载时进行创建。如果单例类的构造方法中没有包含过多的操作处理,饿汉式其实是可以接受的。

public class SingleInstance{

private static SingleInstance sInstance=new SingleInstance();

private SingleInstanca(){}

public static SingleInstance getInstance(){

return sInstance;

}

}

懒汉式

懒汉式指的是单例实例在第一次使用时进行创建

public class SingleInstance{

private static SingleInstance sInstance;

private SingleInstance(){}

public static SingleInstance getInstance(){

if(null==sInstance){

sInstance = new SingleInstance();

}

return sInstance;

}

}

双重检查加锁

双重检查加锁保证了多线程下只创建一个实例,并且加锁代码块只在实例创建之前进行同步。

public class SingleInstance {

private static volatile SingleInstance sInstance;

private  SingleIntance(){}

public static SingleIntance getInstance(){

if (null==sIntance){

synchronized (SingleInstance.class){

if(null==sInstance){

sInstance = new SingleInstance();

}

}

}return sIntance;

}

}

枚举实现单例

枚举实现保证自由序列化;保证只有一个实例;保证线程安全。

public enum SingleIntance{

INSTANCE;

}

用 SingleIntance.INSTANCE调用。

Java几个关键字的使用:


volatite关键字:(多线程)

int value

第一次读取 value 主内存——缓存

第二次读取 value 直接在缓存读取

如果是 volatile int value

第一次读取 value 主内存——缓存

第二次读取 value 主内存——缓存

这样保证新的值能实时更新

synchronized关键字:(多线程)

加锁,多个线程同时访问同个变量,那应该给这个变量加个锁,第一个线程访问时,其他线程等待第一线程执行完才能访问

内存同步(一致性),且保证线程互斥(互斥性)。

static 关键字:

声明变量在主内存上的唯一性,不能保证缓存与主内存变量值的一致性;除非变量的值是不可变的,即再加上final的修饰符,否则static声明的变量,不是线程安全的。

可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。

原子性的意思是不可中断的操作。

相关文章

  • 安卓之单例模式讲解

    为什么我们要使用单例模式呢? 单例模式主要是为了避免因为创建太多的实例从而造成资源浪费,而且多个实例的多次调用可能...

  • 安卓设计模式(二)单例模式

    单例模式是使用最广的设计模式,也是大家最为熟知的. 该系列其他文章: 安卓设计模式(一)面向对象六大设计原则 安卓...

  • Java23种设计模式之「单例模式」

    单例模式 之 holder 模式 (推荐) 单例模式 之 饱汉模式(懒汉模式) 单例模式 之 双重锁检查 (Dou...

  • 单例

    iOS单例模式iOS之单例模式初探iOS单例详解

  • 单例模式

    安卓常用的设计模式 单例模式的6种写法: 饿汉模式,懒汉模式(线程不安全),懒汉模式(线程安全),双重检查模式(D...

  • 设计模式之单例模式详解

    设计模式之单例模式详解 单例模式写法大全,也许有你不知道的写法 导航 引言 什么是单例? 单例模式作用 单例模式的...

  • 单例模式-讲解

    什么是单列模式?百度百科:单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只...

  • 单例模式讲解

    单例模式在我们平时工作中用的非常多,但是我们平时写单例的写法有好几种,当面试的时候面试官问的时候就可能回答不出优缺...

  • 单例模式

    单例模式及C++实现代码单例模式4种实现详解 c++11改进我们的模式之改进单例模式 单例模式(Singleton...

  • 单例模式安全之反射攻击

    单例模式安全之反射攻击 源码 单例模式这里就不谈了,什么是单例模式可参考七种Java单例模式详解,这里是关于单例模...

网友评论

    本文标题:安卓之单例模式讲解

    本文链接:https://www.haomeiwen.com/subject/mjherttx.html