차이점
1. 게으른 사람들은 게으르고 getInstance가 호출될 때만 이 싱글톤을 초기화하기 위해 돌아갑니다.
2. Hungry Han은 클래스가 로드되면 싱글톤 초기화가 완료되어 getInstance가 이미 존재하는지 확인함을 의미합니다.
스레드 안전성:
Hungry Han 스타일은 본질적으로 스레드로부터 안전하며 멀티에 직접 사용할 수 있습니다. -threading, 아무 문제 없이,
게으른 스타일 자체는 스레드로부터 안전하지 않습니다(이중 확인 잠금은 동시성 문제를 해결합니다)
리소스 로딩 및 성능:
Hungry 스타일은 클래스와 동시에 정적 개체를 인스턴스화합니다. 나중에 사용 여부에 관계없이 생성됩니다. 이 단일 인스턴스는 일정량의 메모리를 차지하지만 그에 따라 리소스가 초기화되었으므로 첫 번째 호출이 더 빨라집니다.
Lazy 스타일로 인해 로드가 지연됩니다. 수행할 작업이 많은 경우 인스턴스 개체는 처음 호출될 때만 나타납니다. , 공연이 늦어지고 앞으로는 중국 스타일과 같을 것입니다.
2. 예
public class SingleTon01 { public static void main(String[] args) { GirlFriend gf1 = GirlFriend.getGf(); GirlFriend gf2 = GirlFriend.getGf(); //true System.out.println(gf1 == gf2); Cat cat1 = Cat.getCat(); Cat cat2 = Cat.getCat(); //true System.out.println(cat1 == cat2); } } /** * 单例模式-饿汉模式 * 在类加载的时候就会创建对象 */ class GirlFriend { public String name; private static GirlFriend gf = new GirlFriend("小红"); public static GirlFriend getGf() { return gf; } /** * 构造器私有化,不能在本类之外new * @param name */ private GirlFriend(String name) { this.name = name; } @Override public String toString() { return "GirlFriend{" + "name='" + name + '\'' + '}'; } } /** * 单例模式-懒汉模式 * 1.构造器私有化 * 2.提供一个static静态属性对象 * 3.提供一个public的static方法,返回一个实例对象 * 4.懒汉模式,只有在用户调用方法时,才会创建对象,之后再次调用,返回的是同一对象 */ class Cat { private String name; private static Cat cat; private Cat(String name) { this.name = name; } public static Cat getCat() { if (cat == null) { cat = new Cat("加菲猫"); } return cat; } @Override public String toString() { return "Cat{" + "name='" + name + '\'' + '}'; } }
위 내용은 자바 게으른 모드와 배고픈 모드의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!