직장생활/Java

JAVA 싱글턴 패턴(Singleton Pattern)

체리백 2021. 7. 20.
반응형

초보 개발자한테는 항상 개발간에 새로운것을 맞이할때가 괴로운듯 합니다.

이 글을 올리게 된 계기는.....

JMeter 부하 테스트 간에 속도가 너무 느려서 속도 개선간에 방법을 찾다가 해당 방법을 사용해서 속도가 어느정도 많이 개선이 되었기 때문입니다.

어쨋거나 스레드 100개 200개 이런식으로 테스트하다보니

JAVA 에서 매서드 선언부 즉 new 이렇게 새로 선언하는 부분이 스레드 이 친구들이 몰리면서 부하가 생겻단 말씀

 

고로 싱글턴 패턴이란?

 

싱글턴 패턴은 인스턴스가 오직 1개만 생성되야 하는 경우에 사용되는 패턴입니다. 예를들어 레지스트리 같은 설정 파일의 경우 객체가 여러개 생성되면 설정 값이 변경될 위험이 생길 수 있습니다.
인스턴스가 1개만 생성되는 특징을 가진 싱글턴 패턴을 이용하면, 하나의 인스턴스를 메모리에 등록해서 여러 스레드가 동시에 해당 인스턴스를 공유하여 사용하게끔 할 수 있으므로, 요청이 많은 곳에서 사용하면 효율을 높일 수 있습니다.

 

라고 정의할수는 있습니다. 한줄로 정리하면

인스턴스 딱 하나만 최초에 생성하고 그 뒤로 들어오는 스레드 들은 최초 생성된 인스턴스를 사용하는 것이죠

 

저걸 사용안한다고하면 스레드가 들어올때마다 생성 생성 생성 또 생성 하겟죠?

 

다음은 사용 방법입니다.

 

사용할 클래스 간단하게 만들어놓고...

private static Socket socket = null;

public synchronized static Socket getsocket() {
    if (socket == null) {
        socket = new Socket();
    }
    return socket;
}

위에 처럼 만들어서 사용하면 됩니다.

 

위 클래스명이 TestUtil.java 라고 치면

Socket socket = TestUtil.getsocket();

와 같이 선언해서 사용하면 스레드가 해당 메소드에 접근할때 마다 새로 선언을 하지 않게 됩니다.

 

지금 음 ... 예제를 소켓으로 들었는데 소켓은 매번 새로 new 해야 합니다!! 아마도 ㅎㅎ

그럼 이만 작성을 마칩니다 :)

반응형

'직장생활 > Java' 카테고리의 다른 글

jnlp 파일 실행하는 방법  (2) 2024.02.22
[이클립스] jsr-109 web services 비활성화  (0) 2023.02.27
[이클립스] 2022-12 버전 4.26 SVN 연동하기  (0) 2023.02.27
Java 유료화 관련하여  (0) 2019.05.02
Object Null 체크  (0) 2019.05.02

댓글