본문 바로가기

전체 글

(36)
[C#] Lock [Thread - Unsafe의 예제] 멀티스레드는 필드의 내용을 동시에 액세스 하여 잘못된 결과를 만들거나 출력할 수 있는 이를 Thread unsafe라고 한다. 아래 예제에는 여러 개의 스레드가 Thread - Safe하지 않은 메서드를 호출하는 예를 보여준다. 10개의 스레드가 counter라는 필드를 동시에 쓰거나 읽는 샘플로서 한 스레드가 counter 변수를 변경하고 읽기 전에 다른 스레드가 다시 counter 변수로 변경할 수 있기 때문에 불확실한 결과를 출력하게 된다. # 예제 using System; using System.Threading; namespace MultiThreadApp { class MyClass { private int counter = 1000; public voi..
[C#] 싱글톤 패턴 싱글톤 패턴은 소프트웨어 엔지니어링에서 가장 잘 알려진 패턴 중 하나이다. 기본적으로 싱글톤은 자신의 단일 인스턴스만 생성할 수 있는 클래스이며 일반적으로 해당 인스턴스에 대한 간단한 액세스를 제공한다. 가장 일반적으로 싱글톤은 인스턴스를 생성할 때 매개변수를 지정하는 것을 허용하지 않는다. 그렇지 않을 경우 인스턴스에 대한 두 번째 요청이지만 다른 매개변수를 사용하면 문제가 발생할 수도 있기 때문이다. (동일한 매개변수를 사용하는 모든 요청에 대해 동일한 인스턴스에 액세스 해야 하는 경우 팩토리 패턴이 더 적합하다.) 아래의 구현 방법은 매개변수가 필요하지 않은 상황에 대해서만 다룬다. 일반적으로 싱글톤의 요구 사항은 느리게 생성된 다는 것에 있다. 즉, 인스턴스가 처음 필요할 때까지 생성되지 않는 것..
[JAVA] 싱글톤 패턴 싱글톤이란? - 어떤 클래스가 최초 한 번만 메모리를 할당하고(Static) 그 메모리에 객체를 만들어 사용하는 디자인 패턴. 즉, 생성자의 호출이 반복적으로 이루어지더라도 실제로 생성되는 객체는 최초 생성된 객체를 반환해주는 것이다. 싱글톤 패턴을 사용하는 이유는 메모리 낭비를 방지하기 위함이다. 또한 싱글톤으로 생성된 객체는 무조건 한 번 생성으로 전역성을 띄기 때문에 다른 객체와 공유가 용이하다. 단, 싱글톤의 문제점은 아래와 같다. (1) 싱글톤으로 만들어진 객체의 역할이 간단한 것이 아닌 복잡한 경우라면, 해당 싱글톤 객체를 사용하는 다른 객체 간의 결함도가 높아져서 객체 지향 설계 원칙에 어긋나게 된다. (개방 - 폐쇄) (2) 또한 해당 싱글톤 객체를 수정하는 경우 싱글톤 객체를 사용하는 곳..