------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
饿汉式:
private static Singleton singleton = new Singleton ();
private Singleton (){}
public Singleton getInstance(){return singletion;}
}
懒汉式1:
public class Singleton{
private static Singleton singleton = null;
public static synchronized getInstance(){
if(singleton==null){
singleton = new Singleton();
}
return singleton;
}
}
懒汉式2
public class LazySignleton {
private static LazySignleton INSTANCE = null;
//私有化构造子,阻止外部直接实例化对象
private LazySignleton(){
}
// 获取类的单例实例
public static LazySignleton getInstance(){
if(INSTANCE == null){
synchronized (LazySignleton.class) {
if(INSTANCE == null){
INSTANCE = new LazySignleton();
}
}
}
return INSTANCE;
}
}
饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变
懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的
推荐使用第一种