Con try-with-resource
introdotto in Java 7, sono stato sorpreso di vedere che lo Lock
non è stato adattato per essere un AutoCloseable
. Sembrava abbastanza semplice, così ho aggiunto io stesso come segue:Qualche rischio in un wrapper AutoCloseable per java.util.concurrent.locks.Lock?
class Lock implements AutoCloseable {
private final java.util.concurrent.locks.Lock _lock;
Lock(java.util.concurrent.locks.Lock lock) {
_lock = lock;
_lock.lock();
}
@Override
public void close() {
_lock.unlock();
}
}
Questo funziona con una classe AutoCloseableReentrantReadWiteLock
e il loro utilizzo è la seguente:
try (AutoCloseableReentrantReadWiteLock.Lock l = _lock.writeLock()) {
// do something
}
Dal momento che questo sembra così semplice e l'uso canonico di auto -closing RAII Penso che ci sia una buona ragione per non farlo. Qualcuno lo sa?
@rxg Ho intenzione di annullare la maggior parte della modifica, la mia sorpresa non è stata quando è stata introdotta, ma di recente quando l'ho utilizzata per un blocco –
Nessun problema, ma è possibile correggere il collegamento per AutoCloseable? – rxg