【发布时间】:2013-05-10 13:46:48
【问题描述】:
在 Java 7 中引入了try-with-resource,我惊讶地发现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 的使用看起来如此简单和规范,我认为一定有充分的理由不应该这样做。有人知道吗?
【问题讨论】:
-
@rxg 我要恢复你的大部分编辑,我惊讶的不是它被引入的时候,而是最近我用它来锁
-
没有问题,但你能修复 AutoCloseable 的链接吗?
标签: java raii try-with-resources auto-close