java.util.concurrent.locks.Locks.Lock 的 AutoCloseable 包装器中存在任何风险吗?
2022-09-02 13:14:23
随着在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,我认为一定有充分的理由不应该这样做。有人知道吗?