반응형
기존 쓰레드 시간에 학습한 예제를 볼 때 직원 1, 직원 2 가 각각 방을 청소하면서 방 청소 순서가 섞여서 진행되었다.
이번에는 방을 순차적으로 청소하도록 동기화를 활용해보자.
위와 같이 Room 클래스를 별도로 생성하여 직원 1, 2가 5개의 방씩 순차적으로 청소하도록 하였다.
하지만 실행결과를 보면 아래와 같이 1번방이 두번 청소된 것을 볼 수 있다.
두개의 쓰레드가 동시에 실행되면서 발생하는 오류이다.
동기화를 활용해 한 쓰레드가 실행중이면 다른 쓰레드가 접근하지 못하도록 개선 해보자.
Room 클래스의 clean() 메소드 앞에 synchronized 를 추가해주면 동기화되어 여러개의 쓰레드가 동시에 접근하지 못한다.
반응형
'Spec UP - Backend > 나도코딩의 자바기본편' 카테고리의 다른 글
chap_13. 출력 (0) | 2023.07.12 |
---|---|
chap_13. 입력 (0) | 2023.07.11 |
chap_12. Thread와 Runnable, Join, MultiThread (0) | 2023.07.11 |
chap_11. 예외처리미루기(Throws) (0) | 2023.07.10 |
chap_11. 사용자 정의 예외 (0) | 2023.07.10 |
댓글