С try-with-resource
представлен на Java 7, я с удивлением обнаружил, что Lock
не был доработан, чтобы быть AutoCloseable
. Казалось, довольно простой, поэтому я добавил его себе следующим образом:Любой риск в AutoCloseable wrapper для 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();
}
}
Это работает с AutoCloseableReentrantReadWiteLock
класса и использование выглядит следующим образом:
try (AutoCloseableReentrantReadWiteLock.Lock l = _lock.writeLock()) {
// do something
}
Так как это кажется настолько простым и канонический использование авто -closing RAII Я думаю, что должна быть веская причина, по которой это не должно быть сделано. Кто-нибудь знает?
@rxg Я собираюсь вернуть большую часть вашего редактирования, мое удивление не было, когда оно было введено, но недавно, когда я использовал его для блокировки –
Нет проблем, но вы можете исправить ссылку для AutoCloseable? – rxg