单例设计模式
如果你想创建一个类而且它在任何时刻只会有一个对象,那么你就应该使用单例类模式。
此模式保证某个类在运行期间,只有一个实例对外提供服务,而这个类被称为单例类。
懒汉式:
只有调用getInstance方法时 才创建对象.使用synchronized同步锁来保证防止多个线程同时调用,保证线程安全
问题:由于加锁原因使方法的并发量很低,每次并发1个,而这个方法在单例使用期间,一直会被调用。如果频繁地用到,那频繁加锁、释放锁及并发度低等问题,会导致性能下降
java
/*
懒汉式
*/
public class Student {
//创建static修饰的成员变量
private static Student student;
//设计私有构造方法
public Student() {
super();
}
//提供共有的方法
public static synchronized Student getInstance(){
if(student==null) {
student= new Student();
}
return student;
}
}
饿汉式:
在类加载期间就初始化静态实例对象,保证创建的getInstance实例的是线程安全的
特点: 不支持延迟加载实例(懒加载) , 此中方式类加载比较慢,但是获取实例对象比较快
问题: 该对象足够大的话,而一直没有使用就会造成内存的浪费。
java
/*
饿汉式
*/
public class Student {
//创建static修饰的成员变量
private static Student stu=new Student();
//设计私有构造方法
public Student() {
super();
}
//提供共有的方法
public static synchronized Student getInstance(){
return stu;
}
}