자바 기초 - 생성 및 싱글 톤 클래스를 테스트

원본 링크 : http://www.cnblogs.com/luangeng/p/5837719.html

주요 역할은 클래스는 하나의 인스턴스 만 존재가, Java 프로그램에서 그 싱글 톤 패턴을 보장하는 것입니다. 싱글은 많은 장점을 가지고, 그것은 중복 인스턴스를 생성 방지 할 수있다, 또한 메모리 공간을 절약 할 수, 생성 된 각 개체의 시간 비용을 줄일 수 있습니다뿐만 아니라, 논리 오류는 원인의 여러 인스턴스의 작동을 방지 할 수 있습니다.

객체가 전체 응용 프로그램을 통해 가능하지만, 또한 글로벌 통합 관리 제어의 역할을한다면, 싱글 톤 패턴을 고려해야 할 가치 옵션이 될 수 있습니다. 일부 관리자와 컨트롤러는 종종 싱글로 설계되어 있습니다.

 

1을 달성 일반

공공  클래스 SingletonClass { 
    
    개인  정적  최종 SingletonClass INSTANCE = 새로운 SingletonClass (); 

    개인 SingletonClass () { 
    } 
    
    공공  정적 SingletonClass의 getInstance () 
    { 
        반환 인스턴스; 
    } 

}

반사 싱글을 파괴하여 --- AccessibleObject.setAccessible 방법으로, 개인 생성자를 호출

 

열거 2- 달성

공공  열거 EnumSingleton { 
    
    INSTANCE; 

    공공 문자열 기타 () {
         반환 "기타" ; 
    } 

}

--- 사용 열거 속성

 

3- 정적 내부 클래스 달성

공용  클래스 싱글 { 

    개인  정적  클래스 SingletonHolder {    
        개인  정적  최종 싱글 INSTANCE = 새로운 싱글 ();    
     } 

     개인 싱글 () {}    
 
     공용  정적  최종 싱글의 getInstance () {    
         반환 SingletonHolder.INSTANCE 단계;    
     } 
}

 

---

 

예 단일 테스트 클래스 : 

 

클래스 SingletonTest이 구현 된 Runnable {
 
    개인  정적 CountDownLatch를 래치 = 새로운 CountDownLatch를 (1 );

    정적 세트 <문자열> = 설정된 새로운 ConcurrentSkipListSet <문자열> (); 

    @Override 
    공공  무효 실행 () {
         시도 { 
            ) latch.await (; 
        } 캐치 (예외 : InterruptedException 전자) { 
            e.printStackTrace (); 
        } 

        set.add (SingletonClass2.getInstance의 toString () ().); 
    } 

    공공  정적  무효 메인 (문자열 []에 args)슬로우 예외 { 

        위해 ( INT에서 , K <2000; K = 0 k는 ++ ) { 
            SingletonTest TT = 새로운 SingletonTest (); 
            스레드 t = 새로운 스레드 (TT); 
            t.start (); 
        } 

        // 释放锁
        latch.countDown (); 

        Thread.sleep를 ( 2000 ); 

        에서 System.out.println (set.size ()); 
    } 
}

 

 

 

---

 

종료

HTTPS : //www.cnblogs.com/luangeng/p/5837719.html 재현

추천

출처blog.csdn.net/weixin_30571465/article/details/94786617