간단히 말해,이 동작이 변경되는지 궁금합니다. someMethod()를 호출하면 목록 개체 대신 전체 개체가 잠기기 때문에 예라고 가정합니다. 그러나 나는 아직도이 동기화 작업에 익숙하지 않아 좀 더 교육 된 피드백을 원합니다.동기화 된 블록에서이 동기화 된 메서드를 호출해도 괜찮습니까?
사전이 :
public void run() {
int i = 0;
while (!end) {
synchronized (list) {
while (list.size() == i) {
try {
list.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
애프터 :
public void run() {
int i = 0;
while (!end) {
synchronized (list) {
while (list.size() == i) {
someMethod();
}
}
}
}
public synchronized void someMethod() {
try {
list.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
감사합니다. 감사합니다. – Badger