> Java > Java베이스 > 코드는 Java의 싱글톤 패턴을 설명합니다.

코드는 Java의 싱글톤 패턴을 설명합니다.

angryTom
풀어 주다: 2019-11-26 15:45:37
앞으로
1936명이 탐색했습니다.

코드는 Java의 싱글톤 패턴을 설명합니다.

싱글턴 패턴은 가장 일반적으로 사용되는 디자인 패턴 중 하나라고 할 수 있습니다. 주요 기능은 클래스에 인스턴스가 하나만 있도록 하고 이에 액세스할 수 있는 전역 액세스 지점을 제공하여 사용자 액세스를 엄격하게 제어하는 ​​것입니다. 행동 양식.

싱글턴 모드는 게으른 모드와 배고픈 모드로 나누어집니다. 먼저 배고픈 모드에 대해 이야기해 보겠습니다.

배고픈 모드

배고픈 모드는 오랫동안 배고픈 사람과 마찬가지로 배고픈 상태를 의미합니다. 사람이 있는 한, 뭐든 주면 맛있든, 먹을 수 있든 상관없이 먹습니다. 코드는 다음과 같습니다.

public class Singleton {
    private static Singleton instance = new Singleton();

    private Singleton (){}

    public static Singleton getInstance() {
        return instance;
    }

}
로그인 후 복사

정적 초기화 방법은 누구나 알 수 있습니다. 클래스가 로드되자마자 개체가 인스턴스화됩니다. 장점은 스레드 안전성이지만 시스템 리소스를 차지한다는 단점이 있습니다. 전진. 이때 게으른 남자 모드가 나타납니다:

(추천 영상: java video tutorial)

lazy man mode

음식을 선택하지 않는 배고픈 남자 모드와 비교하면, 게으른 남자 모드 음식이 입에 들어갈 때만 먹는다는 뜻입니다. 그렇지 않으면 아무리 배가 고파도 입을 움직이지 않습니다. 코드는 다음과 같습니다.

public class Singleton{

    private static Singleton instance;

    private Singleton(){}

    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}
로그인 후 복사

하지만 여러 스레드가 동시에 getInstance() 메서드를 호출하는 경우 여러 인스턴스를 생성할 수 있으므로 이 버전의 스레드는 안전하지 않으므로 다음 버전이 생성됩니다.

public class Singleton {

    private static Singleton instance;

    private Singleton (){}

    public static Singleton getInstance() {
        if (instance == null) {  
            synchronized (Singleton .class) {  
            if (instance == null) {  
                instance = new Singleton ();  
                }  
            }  
        } 
        return instance;
    }
}
로그인 후 복사

두 배 사용 잠금 방법은 인스턴스 == null일 때 여러 스레드가 getInstance() 메서드를 호출할 때 첫 번째 판단 수준을 통과할 수 있도록 보장합니다.

일반적인 상황에서 Hungry Han의 싱글톤 모드는 대부분의 요구를 충족할 수 있습니다. 이것이 싱글톤 모드에 대한 기본 상황입니다.

이 기사는 PHP 중국어 웹사이트, java tutorial 칼럼에서 가져온 것입니다. 환영합니다!

위 내용은 코드는 Java의 싱글톤 패턴을 설명합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:cnblogs.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿