我有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