我有ReadWriteLock
一个类和一个方法的子集以以下常见的前奏开始:
rwLock.readLock().lock();
try {
...
} finally {
rwLock.readLock.unlock();
}
另一个方法的子集使用相同的前奏,但这次使用writeLock()
。我发现这种编码风格非常冗长(丑陋?),并且正在通过注释寻找另一种方式。是否有任何同步注释可以添加到我的方法/变量 ala@Synchronized(rwLock.readLock())
或@Synchronized(rwLock.writeLock())
.
我发现@Lock
在 Java EE 中有一个,但它有两个主要缺点:1)对于这样一个简单的要求,我不想从 SE 移动到 EE 和 2)它不将Lock
对象作为参数并使用它的自己的ReadWriteLock
实例。
另一种选择是将 封装Lock
到 an中AutoClosable
并使用try (AutoClosable acLock = new AutoClosableLock(lock)) { ... }
,它引入了一个虚拟变量 ( ) 并每次acLock
实例化一个新变量。AutoClosableLock