随着try-with-resource
在Java 7中引入的,我很惊讶地看到,该Lock
没有被改装成为一个AutoCloseable
。 这似乎相当简单,所以我下面增加它自己:
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
}
因为这看起来很简单,规范使用自动闭合的RAII我想一定有一个很好的原因,这不应该做的。 有人知道吗?