单例模式-饿汉式
静态代码块,线程安全
public class SingletonHungryMan {
//静态变量
private static SingletonHungryMan singletonHungryMan;
//静态代码块,类加载的时候,只加载一次,保证线程安全
static {
singletonHungryMan = new SingletonHungryMan();
}
/**
* 私有无参构造的作用,是不能让其通过new的方式创建对象
*/
private SingletonHungryMan(){}
public static SingletonHungryMan getInstance(){
return singletonHungryMan;
}
}
单例模式-饿汉式
静态fianl成员赋值,线程安全
public class SingletonHungryMan {
//静态final成员赋值,保证线程安全
private final static SingletonHungryMan singletonHungryMan = new SingletonHungryMan ();
/**
* 私有无参构造的作用,是不能让其通过new的方式创建对象
*/
private SingletonHungryMan(){}
public static SingletonHungryMan getInstance(){
return singletonHungryMan;
}
}
单例模式-懒汉式
懒加载,线程安全,推荐使用
public class SingleLazyMan {
//静态成员变量
private static SingleLazyMan singleLazyMan;
/**
* 私有无参构造的作用,是不能让其通过new的方式创建对象
*/
private SingleLazyMan(){}
/**
* 加了锁:
* 使用的同步代码,懒加载,线程安全
* @return
*/
public static SingleLazyMan getInstance(){
if(singleLazyMan == null){
synchronized (SingleLazyMan.class){
if(singleLazyMan == null){
singleLazyMan = new SingleLazyMan();
}
}
}
return singleLazyMan;
}
}