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
Остальные могут быть выведены из контекста.
Вы попробовали? Вы читали Javadoc для «ReentrantLock»? –
Почему вы думаете, что потеряете свою блокировку в этом примере? –
Мне было интересно, может ли вызов быть сверстником, чтобы я потерял замок, потому что он также имеет разблокировку. Я не видел никакой документации о вызовах методов, которые также требуют блокировки. Большинство примеров, которые я нашел, используют синхронизацию. –