>Java >java지도 시간 >자바 게으른 모드와 배고픈 모드의 차이점은 무엇입니까?

자바 게으른 모드와 배고픈 모드의 차이점은 무엇입니까?

WBOY
WBOY앞으로
2023-05-03 20:43:051649검색

차이점

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제