Wraz z try-with-resource
wprowadzonym w języku Java 7, byłem zaskoczony, że Lock
nie został doposażony jako AutoCloseable
. Wydawało się dość proste, więc dodałem mu się następująco:Jakiekolwiek ryzyko w opakowaniu z możliwością automatycznego zamykania dla 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();
}
}
Działa to z klasą AutoCloseableReentrantReadWiteLock
i używanie jest w następujący sposób:
try (AutoCloseableReentrantReadWiteLock.Lock l = _lock.writeLock()) {
// do something
}
Ponieważ wydaje się tak proste i kanoniczny Zastosowanie auto zamykanie RAII Myślę, że musi być dobry powód, aby tego nie robić. Ktoś wie?
@rxg Mam zamiar powrócić do większości edycji, moje zdziwienie nie było, gdy została wprowadzona, ale ostatnio, kiedy użyłem jej do blokady –
Brak problemów, ale czy możesz poprawić link do AutoCloseable? – rxg