정보

개발 기간 2022.11 ~ 2022.11 (1개월)
개발 인원 3인
플랫폼 JAVA, 소켓통신
역할 서버 등록
통신 쓰레드 구현

개발환경

언어 JAVA
서버 AWS EC2 Ubuntu
IDE IntelliJ

문서

GitHub - YoungEun-Choi930/CSMA-CD: 데이터 통신 과제 충돌감지 알고리즘 구현


어려웠던 점

multi-thread 제어

1개의 서버에서 4명의 클라이언트가 동시에 공유 데이터에 접근할 때, 데이터를 atomic하게 관리할 필요가 있었습니다.

synchronized block을 이용하여 데이터에 접근하는 부분을 lock을 설정하였습니다.

file write 작성

결과를 file로 작성함에 있어 코드에서 계산한 시간 순서와 파일에 write되는 시간의 순서가 달랐습니다.

PriorityQueue에 시간순으로 정렬기준을 설정하고, 1분동안의 활동을 저장한 뒤, 모든 작업이 끝난 후 파일을 작성하도록 하였습니다.