환경별 동시성 모델

시스템 구조에 따라 동시성 문제의 양상이 크게 달라진다. 여기서는 세 가지 환경을 비교해보자.

JVM 모니터락의 범위 제한

단일 서버 환경에서는 synchronized나 ReentrantLock처럼 JVM 내부 락만으로도 충분히 상호배제를 제어할 수 있다.

하지만 다중 서버 환경에서 다음과 같은 문제가 생긴다.

트랜잭션이 보장하는 것과 그렇지 못하는것

@Transactional 등으로 설정된 트랜잭션은 다음을 보장한다.

하지만 트랜잭션만으로는 다음까지 보장하지 않는다.