一、饿汉模式,上来就先new对象,表示很饥渴:
package com.jerry.java;
public class Singleton1 {
//1.先声明一个私有化构造器,防止直接创建该对象
private Singleton1() {}
//2.直接下把对象创建好,使用静态变量
private static Singleton1 instance1 = new Singleton1();
//3.提供公共的静态方法,返回类的对象
public static Singleton1 getInstance1() {
return instance1;
}
}
二、懒汉模式,不着急用,我就不着急造对象:
package com.jerry.java;
//懒汉模式
public class Singleton2 {
private Singleton2() {}
//先把对象放着
private static Singleton2 singleton2 = null;
// 有需要的时候,再去创建
private static Singleton2 getInstance() {
if (singleton2 == null) {
return new Singleton2();
}
return singleton2;
}
}
懒汉式与饿汉式的优缺点:
懒汉式,线程不安全,因为存在多线程资源竞争问题。
懒汉式,好处是延迟对象的创建。
饿汉式,线程安全,因为静态对象在编译时只会创建一次。
原文:https://www.cnblogs.com/vpersie2008/p/12722230.html