public void handleLinkWeights(LinkWeightMessage m) { //Calculate shortest paths when all edges and peers discovered.
peerLock.lock();
int size = m.weights.length; //All lists should be the same size
for (int x = 0; x < size; ++x){
NodeMessage a = m.anodes.get(x),
b = m.bnodes.get(x);
if (hasPeer(a.address, a.port)) {
// ...
}
}
peerLock.unlock();
//TODO
}
private boolean hasPeer(String address, int port) {
peerLock.lock();
peerLock.unlock();
}
위 코드를 실행하면 잠금이 해제됩니까? (코드는 불완전하다.)이렇게하면 어떻게됩니까? (잠금)
peerLock
나머지 문맥에서 유추 할 수있는 ReentrantLock
이다.
시도해 보셨습니까? 'ReentrantLock'을위한 Javadoc을 읽었습니까? –
이 예에서 자물쇠가 분실 될 것이라고 생각하는 이유는 무엇입니까? –
피어 (peer)를 호출하면 자물쇠가 풀리는 원인이되는지 궁금합니다. 자물쇠가 필요한 메서드를 호출하는 것에 대한 설명서가 없습니다. 내가 사용한 대부분의 예제는 동기화를 사용합니다. –