Simple&Natural

multithreaded 환경에서 singleton 사용시 발생할 수 있는 문제에 대한 이슈 및 개선 방법 본문

안드로이드(Android)/기타

multithreaded 환경에서 singleton 사용시 발생할 수 있는 문제에 대한 이슈 및 개선 방법

Essense 2020. 4. 11. 05:21
728x90

멀티스레드 환경에서 싱글톤 객체를 초기화할 때 발생할 수 있는 문제는 서로 다른 객체들이 동시에 생성될 수 있다는 것이다.

이는 가뜩이나 취약한 모바일 기기의 하드웨어(특히 메모리)의 낭비를 일으킬 수 있다.

 

이 문제에 대해 간단하게는 synchronyzed를 이용한 동기화 방법이 있다.

그러나 이는 클래스에 대한 스레드의 block을 유발하므로 성능이슈가 발생하게 된다.

 

따라서 volatile을 이용하여 메인메모리에 초기화 시켜두고 getInstance를 이용하여 호출하는 방법을 권장하고 있다.

 

 

 

 

https://medium.com/@oznusem/the-right-way-to-write-a-singleton-when-developing-for-android-or-any-multithreaded-environment-79782dd48f95

 

The right way to write a singleton when developing for Android (or any multithreaded environment)

Singleton is a very common, basic and highly used design pattern. It is being used in almost every Android app out there. As much as it is…

medium.com

 

728x90