Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

좌석 예약 시뮬레이터

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

학습 목표

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

기능 요구사항

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

비기능 요구사항

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

구현 힌트

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

References

About

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

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors