【发布时间】:2016-02-05 02:22:49
【问题描述】:
在阅读JDK代码的时候,我试图找到ReentrantReadWriteLock的一些用法,发现唯一的用法是在javax.swing.plaf.nimbus.ImageCache中。
我对@987654323@ 的用法有两个疑问:
我可以理解getImage方法中使用的readLock,setImage方法中使用的writeLock,但为什么flush方法中使用了readLock? flush 方法不也是某种“写”,因为它改变了地图:
public void flush() {
lock.readLock().lock();
try {
map.clear();
} finally {
lock.readLock().unlock();
}
}
另一个问题:为什么不在这里使用ConcurrentHashMap,因为它会为不同的mapEntries 提供一些并发写入,并提供比ReadWriteLock 更多的并发?
【问题讨论】:
标签: java swing concurrency