public class Singleton {
// 声明私有化的一个构造方法覆盖原有的公共的构造方法。保证外部类创建不了该类的对象。
private Singleton() {
}
// 该类自己创建一个自己的唯一对象。因为外部类创建不了本类的对象所以使用static修饰。使外部类可以通过类名点的方式直接调用。
// 因为是static修饰的所以当该类加载的时候就会加载 所以本单利模式称为饿汉式单利模式 线程安全的
private static Singleton singleton = new Singleton();
// 声明一个静态的方法,返回本类的唯一对象
public static Singleton getInstent() {
return singleton;
}
}
class Singleton_1 {
// 声明私有化的一个构造方法覆盖原有的公共的构造方法。保证外部类创建不了该类的对象。
private Singleton_1() {
}
// 因为只有外部类调用的时候才会创建本类的对象 所以本单利模式称为懒汉式单利模式 线程不安全的
private static Singleton_1 singleton_1;
// 声明一个静态的方法,返回本类的唯一对象,添加同步修饰保证线程安全
public static synchronized Singleton_1 getInstent() {
if (singleton_1 == null) {
singleton_1 = new Singleton_1();
}
return singleton_1;
}
}
class Test {
public static void main(String[] str) {
Singleton s1 = Singleton.getInstent();
Singleton s2 = Singleton.getInstent();
System.out.println(s1);
System.out.println(s2);
System.out.println(s1 == s2);
}
}
两种单例模式
猜你喜欢
转载自blog.csdn.net/weixin_39513166/article/details/78904878
今日推荐
周排行