android 的单例模式

  1. public class Singleton {  
  2.     private static volatile Singleton instance = null;  
  3.   
  4.     private Singleton(){  
  5.     }  
  6.    
  7.     public static Singleton getInstance() {  
  8.         if (instance == null) {  
  9.             synchronized (Singleton.class) {  
  10.                 if (instance == null) {  
  11.                     instance = new Singleton();  
  12.                 }  
  13.             }  
  14.         }  
  15.         return instance;  
  16.     }  
  17. }  

Singleton 这是一个单例的类

优点:  

1,对于那些耗内存的类,只实例化一次,大大提高性能,尤其是移动开发

2,程序运行中,始终保持只有一个实例在内存中 

解释: private Singleton() 私有的构造方法让我们无法在外部创建新的

对象。只允许在类的内部使用。

   private static volatile Singleton instance = null

static 是表示这个变量使用唯一的内存地址。

volatile本质是在告诉jvm当前变量在寄存器中的值是不确定的,需要从内存中读取,不会因为多线程而导致一些BUG。

再就是这个双重判断null :

这是因为如果线程A进入了该代码,线程B 在等待,这是A线程创建完一个实例出来后,线程B 获得锁进入同步代码,实例已经存在,木有必要再创建一个,所以双重判断有必要。

2019年3月15日补充

还有静态代码块,会在项目启动时运行,并且只运行一次。

static{

private static volatile Singleton instance = new Singleton ();  

}

然后相应取出来使用就好了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值