동시성 문제 (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
'Projects > HubEleven' 카테고리의 다른 글
| [동시성 처리] Trouble Shooting : 테스트 코드 Config Client 오류 (해결중..) (0) | 2026.02.06 |
|---|---|
| [동시성 처리] Java 에서 발생하는 동시성 문제란? (0) | 2026.02.04 |
| [동시성 처리] 재고 감소 통합 테스트 코드 7 - 멀티 스레드 (0) | 2026.02.03 |
| [동시성 처리] 재고 감소 통합 테스트 코드 6 - test DB (0) | 2026.01.31 |
| [동시성 처리] 재고 감소 통합 테스트 코드 5 - 단일 스레드 (0) | 2026.01.30 |