android 的单例模式

来源:互联网 发布:linux同名文件夹 编辑:程序博客网 时间:2024/05/16 16:23
  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 获得锁进入同步代码,实例已经存在,木有必要再创建一个,所以双重判断有必要。

原创粉丝点击