2014-05-24 8 views

답변

0

세션 팩토리 객체도 singleton 디자인 패턴을 사용하여 구현됩니다.

싱글 톤 디자인 패턴은 thread safe으로 만들 수 있습니다.

그리고 그들은 세션 팩토리에 대해 스레드 안전성이있는 싱글 톤을 구현했습니다.

우리가 singleton을 구현할 때 스레드 안전성이 필요한지 여부를 확인해야하며 이에 따라 구현해야합니다.

java guide

2

싱글 톤 패턴은 디자인 패턴에서 내 블로그에 싱글의 다양한 구현을 참조도 스레드 안전도 스레드 안전하지 그 자체를. 특정 구현을 살펴 봐야합니다. 중요한 질문은 상태를 관리합니까?

그렇다면 하나 이상의 스레드가 동시에 상태를 변경할 수 없도록해야합니다. 이것은 전역 변수가 스레드 안전과 관련하여 문제가되는 것과 동일한 문제입니다. 그러나이 안전을 보장하는 메커니즘이 있습니다. 하나는 상호 배제라고합니다. 동일한 변수를 동시에 수정하는 두 스레드의 이벤트는 문제가있는 이벤트이므로 더 많은 것을 알고 있어야합니다. 변수를 순차적으로 수정하는 두 개의 스레드처럼, 질문은 모두 응답 수입니다.

일반적인 상호 배타적 인 이벤트와 java 컨텍스트의 구체적인 설명은 각각 here (Mutually exclusive events)here (Oracle concurrency guide)입니다. 전역 변수는 here으로 설명됩니다. Stateless 및 stateful은 concurrency, parallelism and thread-safety과 관련된 좋은 용어입니다. 위로 질문에

: 캔이 여러 스레드간에 자유롭게 공유되고 있지만 팩토리 은 일반적으로 어떤 상태를 소개하지 않습니다. 팩토리에서 생성 된 인스턴스는 대부분 상태 저장이므로 스레드로부터 안전하게 만든 후에는 스레드간에 공유해야합니다.

중요 사항 : 하지만 여기에 오해하지 마십시오. 항상 싱글 톤 구현을 확인하는 것을 잊지 마십시오! 자바에서는 주석을 작성하여 조사를 문서화하고 특정 코드 요소를 스레드로부터 안전하다고 표시 할 수 있습니다. 이러한 동작을 문서화하기 위해 일반적으로 사용 가능한 주석을 이미 정의한 패키지가 있으며, org.apache.http.annotation을 살펴보십시오. API를 사용할 때 그러한 힌트가 있는지 문서를 검사하는 것이 좋습니다.