작성
·
272
·
수정됨
0
락을 점유중인 스레드만이 락을 해제할 수 있으므로 release에 while문은 필요없지않나요?
1. 락을 점유한 스레드만이 release할 수 있음.
2. 즉 release할때는 하나의 스레드만이 접근 가능함.
3. 고로 release에 있는 while문은 필요가없음.
추가로 제공해주신 아래 코드에서 lock 변수가 강의에서 보여주신 수도코드에서는 synchronized가 lock을 의미하고 value를 의미하는거죠?? 용어가 헷갈려서 문의드립니다.
public class Mutex {
private boolean lock = false;
public synchronized void acquired() {
while (lock) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
this.lock = true;
}
public synchronized void release() {
this.lock = false;
this.notify();
}
}