[英]File-based equivalent of java.util.concurrent.locks.Lock?
[英]Any risk in a AutoCloseable wrapper for java.util.concurrent.locks.Lock?
通过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我认为必须有一个很好的理由这不应该做。 有人知道吗?
在2009年2月/ 3月提出try-with-resources
时,这是一个很大的争论。
该提案的作者Josh Bloch说:“ 这个结构只针对一件事,一件事:资源管理。它不是为锁定而设计的。 ”
有一个单独的提议单独涵盖锁,但它没有得到任何地方。
我认为没有涵盖锁的主要原因是:
Lock
是一种不同类型的资源的哲学反对(例如,创建Lock
不需要调用lock
方法)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.