什么是单例模式?
就是一个类只能有一个对象存在!
什么时候用单例模式?
饿汉式: 线程安全,浪费了资源内存 一开始就创建对象
//1.构造方法私有类 饿汉式
private Person1(){
}
private static final Person1 person = new Person1();
public static Person1 getPerson1(){
return person;
}
懒汉式:线程不安全,
节约了资源,需要的时候创建
//1.构造方法私有类 懒汉式
private Person2(){}
private static Person2 person;
public static Person2 getPerson2(){
if(person==null){
person=new Person2();
}
return person;
}
线程不安全 怎么解决 , 可以加锁
//1.构造方法私有类 懒汉式
private Person3(){}
private static Person3 person;
public static synchronized Person3 getPerson3(){
if(person==null){
person=new Person3();
}
return person;
}那么在方法直接加锁,那么锁住的东西多,那么效率就会低,所以锁里面不能有太多内容,因为上一个线程 进去之后,下一个一定会等上一个线程释放;但是单个锁不能保证线程安全,所以有了双重检查;
public static Person3 getPerson33(){
if(person==null) {
synchronized (Person3.class) {
if (person == null) {
person = new Person3();
}
}
}
return person;
}
继续加油! 再接再厉 ,单例模式 总结 以上。