单例模式
一个类只能实例化一次
public class Text016 {
//提供一个开放口 要外面的
//因为是static 所以只可以实例一次,之后的都会去常量池中拿,所以独一份
public static Text016 text16 = new Text016();
//私有化自己的构造函数 其他人没有办法new出来一个实例
private Text016() {}
private String name;
private String age;
}
}
public class Text015 {
public static void main(String[] args) {
Text016 text161 = Text016.text16;
Text016 text162 = Text016.text16;
Text016 text163 = Text016.text16;
System.out.println(text161);
System.out.println(text162);
System.out.println(text163);
}
}
两个类
单例升级版本一:饿汉模式
class Text016
private Text016() {}
private static Text016 text016 = new Text016();
private String name;
private String age;
public static Text016 geText016() {
return text016;
}
class Text015
Text016 text161 = Text016.geText016();
Text016 text162 = Text016.geText016();
Text016 text163 = Text016.geText016();
System.out.println(text161);
System.out.println(text162);
System.out.println(text163);
第二种
private Text016() {}
private static Text016 text016;
private String name;
private String age;
public static Text016 geText016() {
if(text016 == null) {
//在多线程条件下 下面的new还没有实例完。第二个线程就进行了if 会导致实例两次
//当并发够多时完全可以实例化好几个
text016 =new Text016();
}
return text016;
}
在多线程条件下 下面的new还没有实例完。第二个线程就进行了if 会导致实例两次
当并发够多时完全可以实例化好几个