懒汉模式与饿汉模式:单例模式,仅有仅用一个对象!
饿汉模式:单例类的字节码文件加载到方法区的时候 单例(唯一对象)就被new出来了。
Public class Singleton{
public static int num=10;
Private Singleton(){
}
Private static Sington sing = new Singleton();
Public static Singleton genInstance(){
Return sing;
}
}
Public class Test{
Public static void main(String[] args){
System.out.println(Singleton.num);
}
}
Test一经运行,类调用Singleton.num,就创建对象new Singleton()放在内存的方法区;
再用的时候也许一年之后,但是该对象依然是自己在方法区。即一用类就创建对象占据内存。好处在于多线程时,避免高并发性。
懒汉模式:什么时候 调用方法(getInstance)得到对象 什么时候才去new哪个唯一对象。
Public class Singleton2{
public static int num=10;
Private Singleton2(){
}
Private static Sington2 sing2;
Public static Singleton2 genInstance(){
If(sing2==null){
sing2= new Singleton2();
}
Return sing2;
}
}
测试一下。
Public class Test{
Public static void main(String[] args){
System.out.println(Singleton2.num);
}
}
运行并未用Public static Singleton2 genInstance()方法,但需要对象sing2时,才去走if语句创建sing2对象。即用才去建,较省内存。