public class Singleton {
/* 持有私有静态实例,防止被引用,此处赋值为null,目的是实现延迟加载 */
private static Singleton instance = null;
/* 私有构造方法,防止被实例化 */
private Singleton() {
}
/* 静态工程方法,创建实例 */
public static Singleton getInstance() {
if (instance == null) {
synchronized (instance) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
/* 如果该对象被用于序列化,可以保证对象在序列化前后保持一致 */
public Object readResolve() {
return instance;
}
}
/**
饿汉式:先初始化对象,Single类一进内存就创建好了对象 推荐使用
*/
class Single{
private static Single single=new Single();
private Single(){}
public static Single getInstance(){
return single;
}
}
/**
懒汉式:对象是方法被调用时才初始化,即对象的延时加载,
Single类进内存,对象还为创建,只有调用了getInstance方法之后才初始化创建
*/
class Single{
private static Single single=null;
private Single(){}
public static Single getInstance(){
if(single ==null){
synchronized(Single.class){
if(single==null){
single=new Single();
}
}
}
return single;
}
}
Lambada表达式