자바

싱글톤

chantleman 2024. 7. 19. 14:02
import java.util.Date;

public class BigLoad {
	
	public static void main(String[] args) {
		Date d1 = new Date();

		//싱글톤을 적용하면 로딩 한번만 실행(5초). 몇개를 만들어도 5초
		BigLoad.getInstance();
		BigLoad.getInstance();
		BigLoad.getInstance();
		BigLoad.getInstance();
		BigLoad.getInstance(); 
	   
    	//그때마다 객체를 만들어서 오래 걸림 (30초)
		new BigLoad();
		new BigLoad();
		new BigLoad();
		new BigLoad();
		new BigLoad();
		new BigLoad();
        
		Date d2 = new Date();
		System.out.println(d2.getTime()-d1.getTime());
	}
	
	
	
	private static BigLoad instance;

	BigLoad() {
		System.out.print("로딩중");
		for(int i=0;i<10;i++)
		{
			try {
				Thread.sleep(500);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			System.out.print(".");
		}
	}

	public static BigLoad getInstance() {
		if (instance == null) {
			instance = new BigLoad();
		}
		return instance;
	}
}

 

싱글톤이 필요한 이유 1.

로딩 오래 걸리는 걸 해결하기 위해서. 속도차이를 위해

객체를 한번만 만들기 때문에 아무리 많이 호출해도 한번만 실행하기 때문에

BigLoad.getInstance() 실행 결과

 

 

싱글톤이 필요한 이유 2. 

웹페이지 클릭 한 번 할때마다 객체가 만들어지는데

그럼 디비 접속에도 큰 부하가 걸림. 
그래서 직접 디비로 연결하는게 아니라 싱글톤을 통해서 디비 접속하기 때문에

디비 접속은 한번만 하게됨

new BigLoad() 실행결과

 

 

 

싱글톤은 한 번 만든 객체를 영원히 사용할 수 있기 때문에

여러번 호출해도 객체를 여러개 생성하지 않습니다.

 

따라서 부하가 발생하지 않고,

한번 생성한 객체로 여러번 호출가능하기때문에 속도도 빠릅니다.

'자바' 카테고리의 다른 글

ValueObject  (0) 2024.07.22
lombok.jar  (0) 2024.07.22
eclipse에서 ojdbc, 싱글톤 이용해서 db 접속  (0) 2024.07.19
static singleton 템플릿  (0) 2024.07.19
자바 로또 예제  (0) 2024.07.18