Projects/HubEleven

[동시성 처리] 동시성 문제 (Race Condition) 해결 방법 3가지 관점

annovation 2026. 2. 5. 23:13

동시성 문제 (Race Condition)

💡해결 방법

  • 레이스 컨디션을 해결하는 방법에는 크게 3가지 관점이 있다.
  • 첫번째는 Java에서 지원하는 Synchronized 방법으로 해결하기
  • 두번째는 DB가 제공하는 Lock 을 이용하여 데이터 정합성 맞추기
  • 세번째는 Redis 를 활용하여 대표적인 라이브러리 Lettuce 와 Ressison 으로 해결하기

💡동시성 문제 (Race Condition) 이란?

https://annovation.tistory.com/508

 

[동시성 처리] Java 에서 발생하는 동시성 문제란?

Java 동시성 문제 (Race Condition, 레이스 컨디션)💡Java 동시성 문제란?Java에서 여러 스레드가 같은 데이터(필드/객체 상태) 를 공유하며 실행될 때, 올바른 제어 없이 접근하면 오류가 생긴다.이렇게

annovation.tistory.com


Application Level

  • Java에서 제공하는 Synchronized 키워드를 사용하여 한 개의 스레드만 접근 가능하도록 제한할 수 있다.

💡Synchronized


Database Lock

  • 데이터베이스가 제공하는 Lock을 활용하여 데이터 정합성을 맞출 수 있다.

💡Pessimistic Lock (비관적 락)

 

💡Optimistic Lock (낙관적 락)

 

💡Named Lock


Redis Distributed Lock

  • Redis에서 제공하는 대표적인 라이브러리 Luttuce 와 Reddison 을 활용하여 해결할 수 있다.

💡Lettuce

 

💡Reddison


출처

1) 블로그 : 재고 시스템으로 알아보는 동시성 이슈와 해결 방법

https://velog.io/@ha02e/Java-Spring-ConcurrencyIssue#1-application-level

 

[Java/Spring] 재고 시스템으로 알아보는 동시성 이슈와 해결 방법

인프런 재고시스템으로 알아보는 동시성이슈 해결방법 강의를 듣고 작성한 글입니다.

velog.io