java
[Java] Design Pattern 싱글턴 패턴 - Thread 사용시에 문제점 해결, 효율적인 코드
tonirr
2020. 3. 22. 16:26
- synchronized 사용
public synchronized static Database getInstance(String name) {
// synchronized 를 사용하여 실행되는 것들을 줄세워 차례대로 실행 -> 첫번째 스레드만 실행
// 비용이 비쌈
if(singleton == null) {
singleton = new Database(name);
}
return singleton;
}
- static 으로 미리 객체생성
public class Database {
// static 이므로 프로그램이 시작될 때 동시에 객체 생성
private static Database singleton = new Database("products");
private String name;
private Database(String name) {
try {
// 실제 데이터베이스 접속 환경과 비슷하게 시간이 걸리도록 처리
Thread.sleep(100);
this.name = name;
}catch(Exception e) {
}
}
public static Database getInstance(String name) {
// static 으로 프로그램이 실행되면서 바로 객체가 생성되어 따로 메소드에서 처리x
return singleton;
}
public String getName() {
return name;
}
}