Singleton 패턴은 전체 중 하나의 인스턴스만 존재해야 한다. 싱글 쓰레드를 사용하는 경우에는 문제가 되지 않지만, 멀티 쓰레드 환경에서 Singleton에 접근 시 초기화 관련해서 문제가 있다. 아래코드는 단순하게 구현한 멀티쓰레드 환경에서의 Singleton 초기화 방법이다. class Foo { private Singleton instance; public Singleton getInstance() { if(Objects.isNull(instance)) { instance = new Singleton(); } return Singleton; } } 위 코드는 멀티쓰레드 환경에 적합하지 않다. 쓰레드가 getInstance()에 동시에 접근하면 여러번 초기화 되는 문제가 발생하기 때문이다.(상호..