singleton 예제

By 2019. augusztus 2. Egyéb No Comments

문서의 끝에서 클래스를 스레드, 리플렉션 및 직렬화안전한 Singleton 클래스로 만들 수 있습니다. 이 싱글톤은 여전히 완벽한 싱글톤이 아닙니다. 복제를 사용하거나 여러 클래스 로더를 사용하여 Singleton 클래스의 두 개 이상의 인스턴스를 만들어 Singleton 원칙을 위반할 수 있습니다. 그러나 대부분의 응용 프로그램의 경우 Singleton의 위의 구현이 완벽하게 작동합니다. 빌 푸 싱글톤 구현에 동기화가 필요하지 않은 이유는 무엇입니까? 일반 클래스 대 Singleton 클래스: 인스턴스화 측면에서 일반 및 단일 클래스의 차이는 일반 클래스의 경우 생성자(생성자)를 사용하는 반면 singleton 클래스의 경우 getInstance() 메서드(예제 코드:I)를 사용한다는 것입니다. 일반적으로 혼동을 피하기 위해 이 메서드를 정의하는 동안 클래스 이름을 메서드 이름으로 사용할 수도 있습니다(예제 code:II). Singleton 패턴을 구현하기 위해 서로 다른 접근 방식을 가지고 있지만 모두 다음과 같은 일반적인 개념을 가지고 있습니다. 개인 정적 클래스 인스턴스{ 개인 정적 싱글 톤 s = 새 싱글 톤 (); } 예를 들어 설명해 주시겠습니까? 이 것을 피하는 방법? 다음 구현은 고전적인 싱글 톤 디자인 패턴을 보여줍니다 – 왜 우리는 정적 “개인 정적 StaticBlockSingleton 인스턴스”로 선언하는 이유는 우리가 비 정적 매우 좋은 기사로 선언하면 잘못 될 것입니다, 에 대한 모든 시나리오와 접근 방식을 다룹니다 싱글톤 오브젝트를 만듭니다. 동기화는 성능에 큰 영향을 줄 수 있습니다. 이 코드가 자주 호출되는 경우 지연 초기화 또는 이중 확인 잠금과 같은 다양한 기술을 사용하여 속도를 높이려면 컴파일러 최적화로 인해 예상대로 작동하지 않을 수 있습니다. 우리는 우리의 튜토리얼에서 자세한 내용을 볼 수 있습니다 “싱글 톤과 이중 확인 잠금”.

가장 일반적인 방법은 일반 클래스를 만들고 Singleton을 구현하는 것입니다. 이제 Singleton 클래스 위의 스레드가 안전합니다. 싱글 톤 스레드를 안전하게 만드는 것은 특히 안드로이드 응용 프로그램과 같은 다중 스레드 응용 프로그램 환경에서 필요합니다. 잘 포맷, 잘 조직, 싱글 톤에 우수한 튜토리얼! Velmurugan, 메서드 readResolve() 개체가 스트림에서 읽을 때만 작동 합니다. 리플렉션을 사용하여 싱글톤 패턴을 파괴할 때는 그렇지 않습니다. 빌 Pugh 싱글 톤 구현, 그것은 이중 잠금 문제를 해결하는 방법? 두 스레드가 처음 액세스하는 경우? 리플렉션으로 인해 Singleton 오류를 방지하려면 생성자가 이미 초기화되어 있고 일부 클래스가 다시 초기화된 경우 생성자에서 런타임 예외를 throw해야 합니다. SingletonClass.java를 업데이트해 보겠습니다. Java 5 이전에는 Java 메모리 모델에 많은 문제가 있었고 너무 많은 스레드가 Singleton 클래스의 인스턴스를 동시에 얻으려고 시도하는 특정 시나리오에서 위의 접근 방식이 실패했습니다.

그래서 Bill Pugh는 내부 정적 도우미 클래스를 사용하여 Singleton 클래스를 만드는 다른 접근 방식을 생각해 왔습니다. 빌 푸 싱글톤 구현은 다음과 같습니다. singleton 클래스의 인스턴스를 포함하는 개인 내부 정적 클래스를 확인합니다. singleton 클래스가 로드되면 SingletonHelper 클래스가 메모리에 로드되지 않으며 누군가가 getInstance 메서드를 호출할 때만 이 클래스가 로드되고 Singleton 클래스 인스턴스가 만들어집니다.