Java Singleton Pattern
Double Checked Locking을 쓰기도 했는데...
아래와 같이 LazyHolder를 이용한 방법이 Java 버전 상관없고 성능도 뛰어나다고 한다.
한줄씩 찬찬히 보면 왜그런지 알수 있음...
참고 출처: https://medium.com/@joongwon/multi-thread-%ED%99%98%EA%B2%BD%EC%97%90%EC%84%9C%EC%9D%98-%EC%98%AC%EB%B0%94%EB%A5%B8-singleton-578d9511fd42
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public class Singleton { private volatile static Singleton instance; private Singeton() {} public static Singleton getInstance() { if (instance == null) { synchronized(Singleton.class) { if (instance == null) { instance == new Singleton(); } } } return instance; } } |
아래와 같이 LazyHolder를 이용한 방법이 Java 버전 상관없고 성능도 뛰어나다고 한다.
한줄씩 찬찬히 보면 왜그런지 알수 있음...
1 2 3 4 5 6 7 8 9 10 | public class Singleton { private Singleton() {} public static Singleton getInstance() { return LazyHolder.INSTANCE; } private static class LazyHolder { private static final Singleton INSTANCE = new Singleton(); } } |
참고 출처: https://medium.com/@joongwon/multi-thread-%ED%99%98%EA%B2%BD%EC%97%90%EC%84%9C%EC%9D%98-%EC%98%AC%EB%B0%94%EB%A5%B8-singleton-578d9511fd42
댓글
댓글 쓰기