In Java, fare ReentrantLock.lock()
e ReetrantLock.unlock()
utilizzare lo stesso meccanismo di blocco di synchronized()
?Miscelazione sincronizzata() con ReentrantLock.lock()
La mia ipotesi è "No", ma spero di sbagliarmi.
Esempio:
Immaginate che Thread 1 e filettatura 2 entrambi hanno accesso a:
ReentrantLock lock = new ReentrantLock();
Discussione 1 piste:
synchronized (lock) {
// blah
}
Discussione 2 piste:
lock.lock();
try {
// blah
}
finally {
lock.unlock();
}
Assumere il thread 1 la sua parte prima, poi la discussione 2 prima che la discussione 1 sia terminata: Thread 2 attenderà che Thread 1 lasci il blocco synchronized()
o proseguirà?
Questo è quello che ho pensato. C'è un posto in cui ho bisogno di usare 'ReetrantLock.tryLock()', e speravo di farla franca 'sincronizzata' ovunque. Grazie. –