Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

좌석 예약 시뮬레이터

순수 자바(Java)와 멀티스레드를 활용하여,
동시 요청 환경에서 발생하는 데이터 정합성 문제를 재현하고 해결한다.

학습 목표

  • ExecutorService를 활용한 멀티스레드 환경 구성
  • CountDownLatch를 이용한 정확한 동시 요청 시점 제어
  • synchronized와 ReentrantLock의 동작 원리 및 차이 이해
  • 동시성 제어 실패 시 발생하는 중복 예약 문제 검증 및 해결
  • 파일 I/O를 활용한 예약 로그 관리

기능 요구사항

  • 프로그램 실행 시 지정된 개수의 좌석을 메모리에 생성한다.
  • 각 좌석은 고유한 번호와 예약 상태를 가진다.
  • 여러 스레드가 동일한 좌석 번호로 예약 요청을 수행한다.
  • 예약 가능한 좌석은 예약 완료 상태로 변경된다.
  • 이미 예약된 좌석은 다시 예약할 수 없다.
  • 동시에 발생한 예약 요청 중 하나만 성공해야 한다.
  • 예약 성공 및 실패 결과를 콘솔에 출력한다.
  • 예약 성공 및 실패 결과를 reservation.log 파일에 기록한다.

비기능 요구사항

  • 순수 Java만 사용하여 구현한다.
  • Spring Framework 및 외부 라이브러리를 사용하지 않는다.
  • 데이터는 메모리에서 관리한다.
  • 동시성 검증을 위한 테스트 코드를 작성한다.

구현 힌트

  • 좌석은 객체로 관리하며 예약 상태를 가진다.
  • 여러 사용자는 여러 개의 스레드로 표현할 수 있다.
  • 스레드 관리는 ExecutorService를 활용한다.
  • 동시 실행 시점 제어는 CountDownLatch를 활용할 수 있다.
  • 시간 지연 및 경쟁 상황 재현은 Thread.sleep()을 활용할 수 있다.

References

About

[자바] 좌석 예약 시뮬레이터 - 스레드 연습

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors