-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
해결됨
synchronized 과정
23.10.21 20:33 작성 조회수 107
0
public synchronized String lendBook() throws InterruptedException{
while (bookList.size() == 0) {
wait();
}
String book = bookList.remove(0);
System.out.println(Thread.currentThread() + " 학생이 책을 빌렸습니다.");
return book;
}
위 코드의 경우 synchronized method
로 처리하였습니다.
이 경우 shared resource(예제의 경우 this 객체)에 접근하는 3개의 thread에 대해서도 하나의 쓰레드가 차지한 경우 lock을 걸고 사용이 끝나면 다음 쓰레드가 사용하는 과정을 거치나요? (이러한 과정이 굉장히 빨라서 동시에 일어나는 것 처럼 보일 뿐)
자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
wait()/notify() 메서드를 활용한 동기화 프로그래밍
강의실 바로가기
답변을 작성해보세요.
0
박은종
지식공유자2023.10.23
예.. 그렇습니다. method에 synchronized 키워드를 넣으면 그 메서드가 포함된 객체에 lock이 걸립니다. 쓰레드의 개수를 늘리면 waiting 하는 것을 확인하실 수 있습니다.
답변 1