瓶颈之设计模式-----单例模式
1.饿汉式:这个方法在类加载的时候就创建了,无法做到延迟创建
// 饿汉式 单例模式
private static final Demo d=new Demo();
//私有构造 不能new对象
private Demo(){}
public static Demo getInstance(){
return d;
}
public static void main(String[] args) {
Demo.getInstance();
}
2.懒汉式:这种方法在多线程的时候避免了同步问题,实现了懒加载,但多线程时效率低
// 懒汉式 单例模式
// volatile保证每次读数据都是从内存中读 关联到很多知识 详细的请搜volatile关键字
// https://www.cnblogs.com/zhengbin/p/5654805.html#autoid-0-1-0
private static volatile Demo demo;
private Demo(){}
// synchronized同步锁 有关线程的东西 现在也不懂 等以后再品吧GG
// 其实是用getInstance这个静态方法来代替构造方法
public static synchronized Demo getInstance(){
if(demo==null){
demo=new Demo();
}
return demo;
}
public static void main(String[] args) {
Demo.getInstance();
}
3.静态内部类:避免了在类加载的时候就创建了单例。
//静态内部类
private static class Holder{
private static final Demo d=new Demo();
}
private Demo(){}
public static Demo getInstance(){
return Holder.d;
}
public static void main(String[] args) {
Demo.getInstance();
}
4.枚举
public enum Demo1 {
INSTANCE;
}
public static void main(String[] args) {
System.out.println(Demo1.INSTANCE);
}