더북(TheBook)

4.2.4 동시성 관리

동시성(concurrency)은 언젠가 부딪힐 중차대한 문제입니다. 자바 EE로 구현하면 빈 생성에 신경 쓸 일은 없지만, 동시성이 중요한 환경에서 싱글톤을 쓰게 될 경우엔 메서드 접근에 유의해야 합니다. 이 문제도 자바 EE는 애너테이션으로 해결합니다.

자바 EE는 동시성을 컨테이너-관리 동시성(container-managed concurrency), 빈-관리 동시성(bean-managed concurrency) 두 가지 모드로 관리합니다. 컨테이너-관리 모드에선 읽기/쓰기 접근과 연관된 모든 일을 컨테이너가 알아서 처리하는 반면 빈-관리 모드에서는 개발자가 동기화 같은 기존 자바 메서드로 직접 챙겨야 합니다. 빈-관리 모드를 활성화하려면 ConcurrencyManagementType.BEAN 애너테이션을 붙입니다.

자바 EE는 컨테이너-관리 모드가 기본이지만 ConcurrencyManagementType.CONTAINER 애너테이션을 붙여 명시해도 됩니다.

@Startup
@DependsOn(“MyLoggingBean”)
@ConcurrencyManagement(ConcurrencyManagementType.CONTAINER)
@Singleton
public class CacheSingletonBean {
// 구현 코드
}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.