- 싱글톤 패턴은 객체가 전체 프로그램 내에 단 하나의 인스턴스만 생성되게하는 것이다.
여러개의 객체가 생성되어도 상관없지만 자원낭비를 막기위해 고통으로 사용하는 객체를
싱글톤으로 생성한다.
public class Singleton {
private static Singleton st = new Singleton();
private Singleton() {
System.out.println("인스턴스 생성");
}
public static Singleton getInstance() {
return st;
}
public static void main(String[] args) {
Singleton st1 = Singleton.getInstance();
Singleton st2 = Singleton.getInstance();
if(st1 == st2)
System.out.println("st1 == st2");
else
System.out.println("st1 <> st2");
if(st1.equals(st2))
System.out.println("st1 equals st2");
else
System.out.println("st1 not equals st2");
}
}
- 문제는 thread에서 싱글톤을 사용할 경우 각 thread가 다른 객체를 사용하게 될 가능성이 있다.
public static synchronized Singleton getInstance() {
return st;
}
위와 같이 해결할 수 있겠으나 동기화할 경우 프로그램의 성능저하가 있다.
아래와 같이 해결할 수 있다.
public static Singleton getInstance() {
if(st == null) {
synchronized(Singleton.class) {
if(st == null)
st = new Singleton();
}
}
return st;
}
java 1.4 버전 이하에서는 사용할 수 없다.
'Java+Jsp' 카테고리의 다른 글
pd4ml를 사용한 한글 Html를 PDF로 변환 (0) | 2011.05.18 |
---|---|
POI, XOM으로 엑셀파일(xls, xlsx) , XML 처리 (0) | 2011.02.24 |
Eclipse에서 JPetStore 테스트 환경 구축 - Spring Framework 2.5, iBatis (0) | 2010.10.01 |
burpsuite 로컬 프록시 프로그램 (0) | 2010.09.16 |
xss 필터링 (0) | 2010.09.16 |