随着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的直接和规范使用,我认为一定有充分的理由不应该这样做。有人知道吗?